diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml index cdd13f49028..d1fd476f4e2 100644 --- a/.github/workflows/lock.yml +++ b/.github/workflows/lock.yml @@ -8,12 +8,12 @@ jobs: lock: runs-on: ubuntu-latest steps: - - uses: dessant/lock-threads@v2.1.2 + - uses: dessant/lock-threads@v3 with: github-token: ${{ github.token }} - issue-lock-inactive-days: "30" - issue-exclude-created-before: "2020-10-01T00:00:00Z" + issue-inactive-days: "30" + exclude-issue-created-before: "2020-10-01T00:00:00Z" issue-lock-reason: "" - pr-lock-inactive-days: "1" - pr-exclude-created-before: "2020-11-01T00:00:00Z" + pr-inactive-days: "1" + exclude-pr-created-before: "2020-11-01T00:00:00Z" pr-lock-reason: "" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f8ca066ecfd..6bd99cdbb9a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out files from GitHub - uses: actions/checkout@v2.3.4 + uses: actions/checkout@v2.3.5 - name: Setting up Node.js uses: actions/setup-node@v2.4.1 with: @@ -25,7 +25,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out files from GitHub - uses: actions/checkout@v2.3.4 + uses: actions/checkout@v2.3.5 - name: Setting up Node.js uses: actions/setup-node@v2.4.1 with: diff --git a/CODEOWNERS b/CODEOWNERS index 25a89ba7f2d..83b0b3c047c 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -18,6 +18,7 @@ source/_integrations/aemet.markdown @noltari source/_integrations/agent_dvr.markdown @ispysoftware source/_integrations/airly.markdown @bieniu source/_integrations/airnow.markdown @asymworks +source/_integrations/airthings.markdown @danielhiversen source/_integrations/airtouch4.markdown @LonePurpleWolf source/_integrations/airvisual.markdown @bachya source/_integrations/alarmdecoder.markdown @ajschmidt8 @@ -26,6 +27,7 @@ source/_integrations/alexa.smart_home.markdown @home-assistant/cloud @ochlocracy source/_integrations/almond.markdown @gcampax @balloob source/_integrations/alpha_vantage.markdown @fabaff source/_integrations/ambee.markdown @frenck +source/_integrations/amberelectric.markdown @madpilot source/_integrations/ambiclimate.markdown @danielhiversen source/_integrations/ambient_station.markdown @bachya source/_integrations/amcrest.markdown @flacjacket @@ -63,7 +65,7 @@ source/_integrations/blink.markdown @fronzbot source/_integrations/blueprint.markdown @home-assistant/core source/_integrations/bmp280.markdown @belidzs source/_integrations/bmw_connected_drive.markdown @gerard33 @rikroe -source/_integrations/bond.markdown @prystupa +source/_integrations/bond.markdown @prystupa @joshs85 source/_integrations/bosch_shc.markdown @tschamm source/_integrations/braviatv.markdown @bieniu @Drafteed source/_integrations/broadlink.markdown @danielhiversen @felipediel @@ -94,6 +96,7 @@ source/_integrations/coronavirus.markdown @home-assistant/core source/_integrations/counter.markdown @fabaff source/_integrations/cover.markdown @home-assistant/core source/_integrations/cpuspeed.markdown @fabaff +source/_integrations/crownstone.markdown @Crownstone @RicArch97 source/_integrations/cups.markdown @fabaff source/_integrations/daikin.markdown @fredrike source/_integrations/darksky.markdown @fabaff @@ -110,6 +113,7 @@ source/_integrations/dhcp.markdown @bdraco source/_integrations/dht.markdown @thegardenmonkey source/_integrations/digital_ocean.markdown @fabaff source/_integrations/discogs.markdown @thibmaek +source/_integrations/dlna_dmr.markdown @StevenLooman @chishm source/_integrations/doorbird.markdown @oblogic7 @bdraco source/_integrations/dsmr.markdown @Robbie1221 @frenck source/_integrations/dsmr_reader.markdown @depl0y @@ -121,6 +125,7 @@ source/_integrations/ecobee.markdown @marthoc source/_integrations/econet.markdown @vangorra @w1ll1am23 source/_integrations/ecovacs.markdown @OverloadUT source/_integrations/edl21.markdown @mtdcr +source/_integrations/efergy.markdown @tkdrob source/_integrations/egardia.markdown @jeroenterheerdt source/_integrations/eight_sleep.markdown @mezz64 source/_integrations/elgato.markdown @frenck @@ -190,7 +195,7 @@ source/_integrations/group.markdown @home-assistant/core source/_integrations/growatt_server.markdown @indykoning @muppet3000 @JasperPlant source/_integrations/guardian.markdown @bachya source/_integrations/habitica.markdown @ASMfreaK @leikoilja -source/_integrations/harmony.markdown @ehendrix23 @bramkragten @bdraco @mkeesey +source/_integrations/harmony.markdown @ehendrix23 @bramkragten @bdraco @mkeesey @Aohzan source/_integrations/heatmiser.markdown @andylockran source/_integrations/heos.markdown @andrewsayre source/_integrations/here_travel_time.markdown @eifinger @@ -234,6 +239,7 @@ source/_integrations/insteon.markdown @teharris1 source/_integrations/integration.markdown @dgomes source/_integrations/intesishome.markdown @jnimmo source/_integrations/ios.markdown @robbiet480 +source/_integrations/iotawatt.markdown @gtdiehl @jyavenard source/_integrations/iperf3.markdown @rohankapoorcom source/_integrations/ipma.markdown @dgomes @abmantis source/_integrations/iqvia.markdown @bachya @@ -247,7 +253,7 @@ source/_integrations/kaiterra.markdown @Michsior14 source/_integrations/keba.markdown @dannerph source/_integrations/keenetic_ndms2.markdown @foxel source/_integrations/kef.markdown @basnijholt -source/_integrations/keyboard_remote.markdown @bendavid +source/_integrations/keyboard_remote.markdown @bendavid @lanrat source/_integrations/kmtronic.markdown @dgomes source/_integrations/knx.markdown @Julius2342 @farmio @marvin-w source/_integrations/kodi.markdown @OnFreund @cgtobi @@ -295,6 +301,7 @@ source/_integrations/minecraft_server.markdown @elmurato source/_integrations/minio.markdown @tkislan source/_integrations/mobile_app.markdown @robbiet480 source/_integrations/modbus.markdown @adamchengtkc @janiversen @vzahradnik +source/_integrations/modem_callerid.markdown @tkdrob source/_integrations/modern_forms.markdown @wonderslug source/_integrations/monoprice.markdown @etsinko @OnFreund source/_integrations/moon.markdown @fabaff @@ -318,6 +325,7 @@ source/_integrations/ness_alarm.markdown @nickw444 source/_integrations/nest.markdown @allenporter source/_integrations/netatmo.markdown @cgtobi source/_integrations/netdata.markdown @fabaff +source/_integrations/netgear.markdown @hacf-fr @Quentame @starkillerOG source/_integrations/nexia.markdown @bdraco source/_integrations/nextbus.markdown @vividboarder source/_integrations/nextcloud.markdown @meichthys @@ -483,7 +491,7 @@ source/_integrations/supla.markdown @mwegrzynek source/_integrations/surepetcare.markdown @benleb @danielhiversen source/_integrations/swiss_hydrological_data.markdown @fabaff source/_integrations/swiss_public_transport.markdown @fabaff -source/_integrations/switchbot.markdown @danielhiversen +source/_integrations/switchbot.markdown @danielhiversen @RenierM26 source/_integrations/switcher_kis.markdown @tomerfi @thecode source/_integrations/switchmate.markdown @danielhiversen source/_integrations/syncthing.markdown @zhulik @@ -501,7 +509,6 @@ source/_integrations/tasmota.markdown @emontnemery source/_integrations/tautulli.markdown @ludeeus source/_integrations/tellduslive.markdown @fredrike source/_integrations/template.markdown @PhracturedBlue @tetienne @home-assistant/core -source/_integrations/tesla.markdown @zabuldon @alandtse source/_integrations/tfiac.markdown @fredrike @mellado source/_integrations/thethingsnetwork.markdown @fabaff source/_integrations/threshold.markdown @fabaff @@ -520,7 +527,7 @@ source/_integrations/trafikverket_train.markdown @endor-force source/_integrations/trafikverket_weatherstation.markdown @endor-force source/_integrations/transmission.markdown @engrbm87 @JPHutchins source/_integrations/tts.markdown @pvizeli -source/_integrations/tuya.markdown @ollo69 +source/_integrations/tuya.markdown @Tuya @zlinoliver @METISU source/_integrations/twentemilieu.markdown @frenck source/_integrations/twinkly.markdown @dr1rrb source/_integrations/ubus.markdown @noltari @@ -535,6 +542,7 @@ source/_integrations/uptimerobot.markdown @ludeeus source/_integrations/usb.markdown @bdraco source/_integrations/usgs_earthquakes_feed.markdown @exxamalte source/_integrations/utility_meter.markdown @dgomes +source/_integrations/vallox.markdown @andre-richter source/_integrations/velbus.markdown @Cereal2nd @brefra source/_integrations/velux.markdown @Julius2342 source/_integrations/vera.markdown @pavoni @@ -553,10 +561,12 @@ source/_integrations/wake_on_lan.markdown @ntilley905 source/_integrations/wallbox.markdown @hesselonline source/_integrations/waqi.markdown @andrey-git source/_integrations/watson_tts.markdown @rutkai +source/_integrations/watttime.markdown @bachya source/_integrations/weather.markdown @fabaff source/_integrations/webostv.markdown @bendavid @thecode source/_integrations/websocket_api.markdown @home-assistant/core source/_integrations/wemo.markdown @esev +source/_integrations/whirlpool.markdown @abmantis source/_integrations/wiffi.markdown @mampfes source/_integrations/wilight.markdown @leofig-rj source/_integrations/wirelesstag.markdown @sergeymaysak diff --git a/Gemfile.lock b/Gemfile.lock index 771743499e4..213fe35b77b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -114,7 +114,7 @@ GEM tilt (2.0.10) tzinfo (2.0.4) concurrent-ruby (~> 1.0) - tzinfo-data (1.2021.2) + tzinfo-data (1.2021.4) tzinfo (>= 1.0.0) unicode-display_width (1.8.0) diff --git a/_config.yml b/_config.yml index c9398007021..96ce0da089b 100644 --- a/_config.yml +++ b/_config.yml @@ -107,9 +107,9 @@ social: # Home Assistant release details current_major_version: 2021 -current_minor_version: 9 -current_patch_version: 7 -date_released: 2021-09-18 +current_minor_version: 10 +current_patch_version: 6 +date_released: 2021-10-18 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/package-lock.json b/package-lock.json index c0938794985..42a1dcf2d04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,6222 @@ { "name": "home-assistant.io", "version": "1.0.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "home-assistant.io", + "version": "1.0.0", + "devDependencies": { + "remark-cli": "^10.0.0", + "remark-frontmatter": "^4.0.0", + "remark-lint": "^9.1.0", + "remark-lint-fenced-code-flag": "^3.1.0", + "remark-lint-no-shell-dollars": "^3.1.0", + "remark-stringify": "^10.0.1", + "textlint": "^12.0.2", + "textlint-rule-common-misspellings": "^1.0.1", + "textlint-rule-terminology": "^2.1.5" + } + }, + "node_modules/@azu/format-text": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.1.tgz", + "integrity": "sha1-aWc1CpRkD2sChVFpvYl85U1s6+I=", + "dev": true + }, + "node_modules/@azu/style-format": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@azu/style-format/-/style-format-1.0.0.tgz", + "integrity": "sha1-5wGH+Khi4ZGxvObAJo8TrNOlayA=", + "dev": true, + "dependencies": { + "@azu/format-text": "^1.0.1" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@textlint/ast-node-types": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.0.0.tgz", + "integrity": "sha512-qUjmlpz1vR3AStBA9RPDCVT0/pGtePvBJ5Vb/0PzTrnr04iFktG6P6B1VOmgTh8J9Kl/FonQFo3A9M1Q3UH+JA==", + "dev": true + }, + "node_modules/@textlint/ast-tester": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.0.2.tgz", + "integrity": "sha512-kHta27+SJC0YxEyEdlNux6m2JepX920gc5x98lVBVYK6Wq6cAF67EEGl1o9ynqroIHEc3wTSEDOFwxXpnlfsNA==", + "dev": true, + "dependencies": { + "@textlint/ast-node-types": "^12.0.0", + "debug": "^4.3.2" + } + }, + "node_modules/@textlint/ast-traverse": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.0.2.tgz", + "integrity": "sha512-OrbGnwtqNAsX7jVSRKecc1Lp2tg54ntnTuvOHkYrZrlC72Hk7+7V/UFQBmFNQCe0cH6Tjb5FFFcgp6f8gM+ehw==", + "dev": true, + "dependencies": { + "@textlint/ast-node-types": "^12.0.0" + } + }, + "node_modules/@textlint/feature-flag": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.0.2.tgz", + "integrity": "sha512-yNq5uErjFrVq1gghg3A8D77+E36wLXRws5LwSsoRC4LVPIGR+LYZ9BlkoyNTas8dOzGwTs6XZIcWCIWXy77M8Q==", + "dev": true + }, + "node_modules/@textlint/fixer-formatter": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.0.2.tgz", + "integrity": "sha512-ii49bDLVcgnnxmnaZFX0rDFEIGH3o6DGKnr76cfqy6+DWkGQlhBPyRdbx2bIF65KT+7nAMU0JjfEK+n/WIYFTA==", + "dev": true, + "dependencies": { + "@textlint/module-interop": "^12.0.2", + "@textlint/types": "^12.0.2", + "chalk": "^1.1.3", + "debug": "^4.3.2", + "diff": "^4.0.2", + "is-file": "^1.0.0", + "string-width": "^1.0.2", + "strip-ansi": "^6.0.0", + "text-table": "^0.2.0", + "try-resolve": "^1.0.1" + } + }, + "node_modules/@textlint/kernel": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.0.2.tgz", + "integrity": "sha512-IVWC5xyHj58X3/sUXAOndOPMQMkvGaXXPCtLITm8rSwKRc4D/qF2hhwAisOu8XImIwBGzvhFlq+IM7cUW1qDtA==", + "dev": true, + "dependencies": { + "@textlint/ast-node-types": "^12.0.0", + "@textlint/ast-tester": "^12.0.2", + "@textlint/ast-traverse": "^12.0.2", + "@textlint/feature-flag": "^12.0.2", + "@textlint/source-code-fixer": "^12.0.2", + "@textlint/types": "^12.0.2", + "@textlint/utils": "^12.0.2", + "debug": "^4.3.2", + "deep-equal": "^1.1.1", + "structured-source": "^3.0.2" + } + }, + "node_modules/@textlint/linter-formatter": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.0.2.tgz", + "integrity": "sha512-xRTkLmMUnxW5Y6UXsIc9iLo8hyj5toYXVA/u5ABO4t3QObgtUllWi9W2eauZeY19pLTXweBHYxqG/tl3jTCpJQ==", + "dev": true, + "dependencies": { + "@azu/format-text": "^1.0.1", + "@azu/style-format": "^1.0.0", + "@textlint/module-interop": "^12.0.2", + "@textlint/types": "^12.0.2", + "chalk": "^1.1.3", + "debug": "^4.3.2", + "is-file": "^1.0.0", + "js-yaml": "^3.14.1", + "optionator": "^0.9.1", + "pluralize": "^2.0.0", + "string-width": "^1.0.2", + "strip-ansi": "^6.0.0", + "table": "^6.7.1", + "text-table": "^0.2.0", + "try-resolve": "^1.0.1", + "xml-escape": "^1.1.0" + } + }, + "node_modules/@textlint/markdown-to-ast": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.0.2.tgz", + "integrity": "sha512-xAJ4U/fOL7FoX4bYeYRCsSIeTxFqzKd944AsVxAYrz2ZfKH0TtBSNDDtN22uBEXOrSCCR12Z7QuMcp+URyYWlw==", + "dev": true, + "dependencies": { + "@textlint/ast-node-types": "^12.0.0", + "debug": "^4.3.2", + "remark-footnotes": "^3.0.0", + "remark-frontmatter": "^3.0.0", + "remark-gfm": "^1.0.0", + "remark-parse": "^9.0.0", + "traverse": "^0.6.6", + "unified": "^9.2.1" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/fault": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz", + "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==", + "dev": true, + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/mdast-util-frontmatter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz", + "integrity": "sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==", + "dev": true, + "dependencies": { + "micromark-extension-frontmatter": "^0.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/micromark-extension-frontmatter": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz", + "integrity": "sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==", + "dev": true, + "dependencies": { + "fault": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/remark-frontmatter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz", + "integrity": "sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==", + "dev": true, + "dependencies": { + "mdast-util-frontmatter": "^0.2.0", + "micromark-extension-frontmatter": "^0.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/remark-parse": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", + "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", + "dev": true, + "dependencies": { + "mdast-util-from-markdown": "^0.8.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "dev": true, + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@textlint/markdown-to-ast/node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@textlint/module-interop": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.0.2.tgz", + "integrity": "sha512-jnFx7B7Q/au49n5Kt/ttPhecvnJGj7643KzPxRNXy422nmafi1EfOZDMGkNEJhlVsQ9WzAnliTTXTFTrBhtVYA==", + "dev": true + }, + "node_modules/@textlint/source-code-fixer": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.0.2.tgz", + "integrity": "sha512-lWNndH7Z+KGo8NhM4e3I5fR0SfZeS25AW7MRQGsKbxHL8NSi6KmCXVK8unEls82+DKXW4VdjTTgVYTTOVGa3BA==", + "dev": true, + "dependencies": { + "@textlint/types": "^12.0.2", + "debug": "^4.3.2" + } + }, + "node_modules/@textlint/text-to-ast": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.0.2.tgz", + "integrity": "sha512-vgB4k4CpY59XVrcvWLyFkCoMIVpiUheuy2FC1+Qb44hmoEYT26uglX7SEkBRTQvlzsjChgryzA2PFf2c1wkL0Q==", + "dev": true, + "dependencies": { + "@textlint/ast-node-types": "^12.0.0" + } + }, + "node_modules/@textlint/textlint-plugin-markdown": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.0.2.tgz", + "integrity": "sha512-3qizGxt/cz0foqmUuqpk0hnQzXdDehG0CBrzUINJVa7btpDn8bD9fRYn88OdmGLtejVJR/pUDOOZk3RYYEVmlQ==", + "dev": true, + "dependencies": { + "@textlint/markdown-to-ast": "^12.0.2" + } + }, + "node_modules/@textlint/textlint-plugin-text": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.0.2.tgz", + "integrity": "sha512-giCTwrioT6bYlOZ+xf/c9ML1GYitQVrtToHzWI6AAs8szg+Q5+h3KCG921sDEGgZfqnljuBaYcHJsW/iNG1+UA==", + "dev": true, + "dependencies": { + "@textlint/text-to-ast": "^12.0.2" + } + }, + "node_modules/@textlint/types": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.0.2.tgz", + "integrity": "sha512-w5aWSCd1sot1waiYw8KnmJNY1q+k9LDoaA6xjGbBuVBGJl0TLXIZoOP8HYFUcKFfJRpqGGob1geTHiyFdnyS0w==", + "dev": true, + "dependencies": { + "@textlint/ast-node-types": "^12.0.0" + } + }, + "node_modules/@textlint/utils": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.0.2.tgz", + "integrity": "sha512-IYmibhDMWd8EmRvk8ii9AA/ecrZk5Wj5NNcKuB78+ae2PIVI1zWzQoieSvQyX7DLPRVH4S22RORiEpruRcDzng==", + "dev": true + }, + "node_modules/@types/concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dev": true, + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true + }, + "node_modules/@types/estree-jsx": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-0.0.1.tgz", + "integrity": "sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/is-empty": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.1.tgz", + "integrity": "sha512-a3xgqnFTuNJDm1fjsTjHocYJ40Cz3t8utYpi5GNaxzrJC2HSD08ym+whIL7fNqiqBCdM9bcqD1H/tORWAFXoZw==", + "dev": true + }, + "node_modules/@types/js-yaml": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.3.tgz", + "integrity": "sha512-5t9BhoORasuF5uCPr+d5/hdB++zRFUTMIZOzbNkr+jZh3yQht4HYbRDyj9fY8n2TZT30iW9huzav73x4NikqWg==", + "dev": true + }, + "node_modules/@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.10.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz", + "integrity": "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==", + "dev": true + }, + "node_modules/@types/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==", + "dev": true + }, + "node_modules/@types/text-table": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@types/text-table/-/text-table-0.2.2.tgz", + "integrity": "sha512-dGoI5Af7To0R2XE8wJuc6vwlavWARsCh3UKJPjWs1YEqGUqfgBI/j/4GX0yf19/DsDPPf0YAXWAp8psNeIehLg==", + "dev": true + }, + "node_modules/@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-es7-plugin": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz", + "integrity": "sha1-8u4fMiipDurRJF+asZIusucdM2s=", + "dev": true + }, + "node_modules/ajv": { + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", + "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bail": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.1.tgz", + "integrity": "sha512-d5FoTAr2S5DSUPKl85WNm2yUwsINN8eidIdIwsOge2t33DaOfOdSmmsI11jMN3GmALCXaw+Y6HMVHDzePshFAA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/boundary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz", + "integrity": "sha1-TWfcJgLAzBbdm85+v4fpSCkPWBI=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtins": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-4.0.0.tgz", + "integrity": "sha512-qC0E2Dxgou1IHhvJSLwGDSTvokbRovU5zZFuDY6oY8Y2lF3nGt5Ad8YZK7GMtqzY84Wu7pXTPeHQeHcXSXsRhw==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/builtins/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-signature": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", + "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chalk/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/character-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.0.tgz", + "integrity": "sha512-oHqMj3eAuJ77/P5PaIRcqk+C3hdfNwyCD2DAUcD5gyXkegAuF2USC40CEqPscDk4I8FRGMTojGJQkXDsN5QlJA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-2.0.0.tgz", + "integrity": "sha512-YwaEtEvWLpFa6Wh3uVLrvirA/ahr9fki/NUd/Bd4OR6EdJ8D22hovYQEOUCBfQfcqnC4IAMGMsHXY1eXgL4ZZA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.0.tgz", + "integrity": "sha512-pE3Z15lLRxDzWJy7bBHBopRwfI20sbrMVLQTC7xsPglCHf4Wv1e167OgYAFP78co2XlhojDyAqA+IAJse27//g==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "engines": [ + "node >= 6.0" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", + "dev": true, + "hasInstallScript": true + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-match-patch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", + "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", + "dev": true + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/empower": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/empower/-/empower-1.3.1.tgz", + "integrity": "sha512-uB6/ViBaawOO/uujFADTK3SqdYlxYNn+N4usK9MRKZ4Hbn/1QSy8k2PezxCA2/+JGbF8vd/eOfghZ90oOSDZCA==", + "dev": true, + "dependencies": { + "core-js": "^2.0.0", + "empower-core": "^1.2.0" + } + }, + "node_modules/empower-core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-1.2.0.tgz", + "integrity": "sha512-g6+K6Geyc1o6FdXs9HwrXleCFan7d66G5xSCfSF7x1mJDCes6t0om9lFQG3zOrzh3Bkb/45N0cZ5Gqsf7YrzGQ==", + "dev": true, + "dependencies": { + "call-signature": "0.0.2", + "core-js": "^2.0.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/espurify": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.1.tgz", + "integrity": "sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg==", + "dev": true, + "dependencies": { + "core-js": "^2.0.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fault": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.0.tgz", + "integrity": "sha512-JsDj9LFcoC+4ChII1QpXPA7YIaY8zmqPYw7h9j5n7St7a0BBKfNnwEBAUQRBx70o2q4rs+BeSNHk8Exm6xE7fQ==", + "dev": true, + "dependencies": { + "format": "^0.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "node_modules/file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "dependencies": { + "flat-cache": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "dependencies": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stdin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", + "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-meta-resolve": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-1.1.1.tgz", + "integrity": "sha512-JiTuIvVyPaUg11eTrNDx5bgQ/yMKMZffc7YSjvQeSMXy58DO2SQ8BtAf3xteZvmzvjYh14wnqNjL8XVeDy2o9A==", + "dev": true, + "dependencies": { + "builtins": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/is-alphabetical": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.0.tgz", + "integrity": "sha512-5OV8Toyq3oh4eq6sbWTYzlGdnMT/DPI5I0zxUBxjiigQsZycpkKF3kskkao3JyYGuYDHvhgJF+DrjMQp9SX86w==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.0.tgz", + "integrity": "sha512-t+2GlJ+hO9yagJ+jU3+HSh80VKvz/3cG2cxbGGm4S0hjKuhWQXgPVUVOZz3tqZzMjhmphZ+1TIJTlRZRoe6GCQ==", + "dev": true, + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", + "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.0.tgz", + "integrity": "sha512-QfrfjQV0LjoWQ1K1XSoEZkTAzSa14RKVMa5zg3SdAfzEmQzRM4+tbSFWb78creCeA9rNBzaZal92opi1TwPWZw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-empty": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz", + "integrity": "sha1-3pu1snhzigWgsJpX4ftNSjQan2s=", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-file/-/is-file-1.0.0.tgz", + "integrity": "sha1-KKRM+9nT2xkwRfIrZfzo7fliBZY=", + "dev": true + }, + "node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.0.tgz", + "integrity": "sha512-vGOtYkiaxwIiR0+Ng/zNId+ZZehGfINwTzdrDqc6iubbnQWhnPuYymOzOKUDqa2cSl59yHnEh2h6MvRLQsyNug==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz", + "integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/libnpmconfig": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/libnpmconfig/-/libnpmconfig-1.2.1.tgz", + "integrity": "sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA==", + "dev": true, + "dependencies": { + "figgy-pudding": "^3.5.1", + "find-up": "^3.0.0", + "ini": "^1.3.5" + } + }, + "node_modules/libnpmconfig/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/libnpmconfig/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/libnpmconfig/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/libnpmconfig/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/libnpmconfig/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-plugin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-4.0.1.tgz", + "integrity": "sha512-4kMi+mOSn/TR51pDo4tgxROHfBHXsrcyEYSGHcJ1o6TtRaP2PsRM5EwmYbj1uiLDvbfA/ohwuSWZJzqGiai8Dw==", + "dev": true, + "dependencies": { + "import-meta-resolve": "^1.0.0", + "libnpmconfig": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, + "node_modules/log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "dependencies": { + "chalk": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/longest-streak": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.0.tgz", + "integrity": "sha512-XhUjWR5CFaQ03JOP+iSDS9koy8T5jfoImCZ4XprElw3BXsSk4MpVYOLw/6LTDKZhO13PlAXnB5gS4MHQTpkSOw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "dev": true, + "dependencies": { + "repeat-string": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "node_modules/mdast-comment-marker": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-2.1.0.tgz", + "integrity": "sha512-/+Cfm8A83PjkqjQDB9iYqHESGuXlriCWAwRGPJjkYmxXrF4r6saxeUlOKNrf+SogTwg9E8uyHRCFHLG6/BAAdA==", + "dev": true, + "dependencies": { + "mdast-util-mdx-expression": "^1.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", + "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^4.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mdast-util-footnote": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/mdast-util-footnote/-/mdast-util-footnote-0.1.7.tgz", + "integrity": "sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w==", + "dev": true, + "dependencies": { + "mdast-util-to-markdown": "^0.6.0", + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-footnote/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-footnote/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-footnote/node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-footnote/node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-footnote/node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-footnote/node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-footnote/node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-footnote/node_modules/longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-footnote/node_modules/mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-footnote/node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-footnote/node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "node_modules/mdast-util-footnote/node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-footnote/node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.0.3.tgz", + "integrity": "sha512-8/GPJsE3h73C+PBFJ3cCdvegz07mLS8/5NfuIsP8q/cw/Ph/aximc6OYdfwerwcZqTYVu7WeXm/8+RDztxreZQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "parse-entities": "^3.0.0", + "power-assert": "^1.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-frontmatter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-1.0.0.tgz", + "integrity": "sha512-7itKvp0arEVNpCktOET/eLFAYaZ+0cNjVtFtIPxgQ5tV+3i+D4SDDTjTzPWl44LT59PC+xdx+glNTawBdF98Mw==", + "dev": true, + "dependencies": { + "micromark-extension-frontmatter": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", + "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", + "dev": true, + "dependencies": { + "mdast-util-gfm-autolink-literal": "^0.1.0", + "mdast-util-gfm-strikethrough": "^0.2.0", + "mdast-util-gfm-table": "^0.1.0", + "mdast-util-gfm-task-list-item": "^0.1.0", + "mdast-util-to-markdown": "^0.6.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", + "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", + "dev": true, + "dependencies": { + "ccount": "^1.0.0", + "mdast-util-find-and-replace": "^1.1.0", + "micromark": "^2.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "node_modules/mdast-util-gfm-autolink-literal/node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", + "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", + "dev": true, + "dependencies": { + "mdast-util-to-markdown": "^0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-strikethrough/node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", + "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", + "dev": true, + "dependencies": { + "markdown-table": "^2.0.0", + "mdast-util-to-markdown": "~0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-table/node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", + "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", + "dev": true, + "dependencies": { + "mdast-util-to-markdown": "~0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm-task-list-item/node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm/node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm/node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm/node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm/node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm/node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm/node_modules/longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm/node_modules/mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm/node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm/node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-gfm/node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.1.1.tgz", + "integrity": "sha512-RDLRkBFmBKCJl6/fQdxxKL2BqNtoPFoNBmQAlj5ZNKOijIWRKjdhPkeufsUOaexLj+78mhJc+L7d1MYka8/LdQ==", + "dev": true, + "dependencies": { + "@types/estree-jsx": "^0.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.2.3.tgz", + "integrity": "sha512-040jJYtjOUdbvYAXCfPrpLJRdvMOmR33KRqlhT4r+fEbVM+jao1RMbA8RmGeRmw8RAj3vQ+HvhIaJPijvnOwCg==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "longest-streak": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", + "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.0.6.tgz", + "integrity": "sha512-yzyfAHhglgEDprJnsvoQVPSXy5OnQfgyatGTxh0XVpismB5+aECnsHY2I1oxsySf6t/2FeamjOLoxun47nVhvw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "parse-entities": "^3.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.2.tgz", + "integrity": "sha512-nIxVDZnm1ra2BcnUSUWe9LC3UBTQ/sqUp4do80xXhtCWxBYj7u70Qw2CH54oZu7jblDCxDO3tmNBSprV5EWndg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "parse-entities": "^3.0.0", + "power-assert": "^1.0.0" + } + }, + "node_modules/micromark-extension-footnote": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/micromark-extension-footnote/-/micromark-extension-footnote-0.3.2.tgz", + "integrity": "sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ==", + "dev": true, + "dependencies": { + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-footnote/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-footnote/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-footnote/node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-footnote/node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-footnote/node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-footnote/node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-footnote/node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-footnote/node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "node_modules/micromark-extension-footnote/node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-frontmatter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.0.0.tgz", + "integrity": "sha512-EXjmRnupoX6yYuUJSQhrQ9ggK0iQtQlpi6xeJzVD5xscyAI+giqco5fdymayZhJMbIFecjnE2yz85S9NzIgQpg==", + "dev": true, + "dependencies": { + "fault": "^2.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", + "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", + "dev": true, + "dependencies": { + "micromark": "~2.11.0", + "micromark-extension-gfm-autolink-literal": "~0.5.0", + "micromark-extension-gfm-strikethrough": "~0.6.5", + "micromark-extension-gfm-table": "~0.4.0", + "micromark-extension-gfm-tagfilter": "~0.3.0", + "micromark-extension-gfm-task-list-item": "~0.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", + "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", + "dev": true, + "dependencies": { + "micromark": "~2.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal/node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", + "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", + "dev": true, + "dependencies": { + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-strikethrough/node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", + "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", + "dev": true, + "dependencies": { + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-table/node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", + "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", + "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", + "dev": true, + "dependencies": { + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm-task-list-item/node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm/node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm/node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm/node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm/node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm/node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-extension-gfm/node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm/node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/micromark-factory-destination": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", + "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.1.tgz", + "integrity": "sha512-d/we+Gm9cqySOaPmtx109GEbG2dadb2myK9Tcm3aAx9Ug0IL4ucQtzKVoO+02HI10E76ncv9n/VEEF5ym0RzTQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "power-assert": "^1.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz", + "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.1.tgz", + "integrity": "sha512-nAdDygUZK7WtHFkNi01PzS33jeWPKZXA6LEABQiCVDXvNNUjdQ9o4stT8jBu3BNsE3ZulfG5IGdfWuOWS/CS+w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "power-assert": "^1.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz", + "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.1.0.tgz", + "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz", + "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz", + "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz", + "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz", + "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.1.tgz", + "integrity": "sha512-Wf3H6jLaO3iIlHEvblESXaKAr72nK7JtBbLLICPwuZc3eJkMcp4j8rJ5Xv1VbQWMCWWDvKUbVUbE2MfQNznwTA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "parse-entities": "^3.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.0.tgz", + "integrity": "sha512-cJpFVM768h6zkd8qJ1LNRrITfY4gwFt+tziPcIf71Ui8yFzY9wG3snZQqiWVq93PG4Sw6YOtcNiKJfVIs9qfGg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-html-tag-name": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.0.0.tgz", + "integrity": "sha512-NenEKIshW2ZI/ERv9HtFNsrn3llSPZtY337LID/24WeLqMzeZhBEE6BQ0vS2ZBjshm5n40chKtJ3qjAbVV8S0g==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", + "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz", + "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz", + "integrity": "sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.1.tgz", + "integrity": "sha512-Zy7XuVepFWm8MqiqFywq4wFu4GXlksyC3e942GaQBXaaCWha3VbkZiTmOEBDCcvp1xKq/xZ2gGEIsCjU+SuEig==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "power-assert": "^1.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.0.tgz", + "integrity": "sha512-NZA01jHRNCt4KlOROn8/bGi6vvpEmlXld7EHcRH+aYWUfL3Wc8JLUNNlqUMKa0hhz6GrpUWsHtzPmKof57v0gQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.1.tgz", + "integrity": "sha512-UT0ylWEEy80RFYzK9pEaugTqaxoD/j0Y9WhHpSyitxd99zjoQz7JJ+iKuhPAgOW2MiPSUAx+c09dcqokeyaROA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/misspellings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/misspellings/-/misspellings-1.1.0.tgz", + "integrity": "sha1-U9UAJmy9Cc2p2UxM85LmBYm1syQ=", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-entities": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-3.0.0.tgz", + "integrity": "sha512-AJlcIFDNPEP33KyJLguv0xJc83BNvjxwpuUIcetyXUsLpVXAUCePJ5kIoYtEN2R1ac0cYaRu/vk9dVFkewHQhQ==", + "dev": true, + "dependencies": { + "character-entities": "^2.0.0", + "character-entities-legacy": "^2.0.0", + "character-reference-invalid": "^2.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-glob-pattern": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-to-glob-pattern/-/path-to-glob-pattern-1.0.2.tgz", + "integrity": "sha1-Rz5qOikqnRP7rj7czuctO6uoxhk=", + "dev": true + }, + "node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pluralize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz", + "integrity": "sha1-crcmqm+sHt7uQiVsfY3CVrM1Z38=", + "dev": true + }, + "node_modules/power-assert": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/power-assert/-/power-assert-1.6.1.tgz", + "integrity": "sha512-VWkkZV6Y+W8qLX/PtJu2Ur2jDPIs0a5vbP0TpKeybNcIXmT4vcKoVkyTp5lnQvTpY/DxacAZ4RZisHRHLJcAZQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "empower": "^1.3.1", + "power-assert-formatter": "^1.4.1", + "universal-deep-strict-equal": "^1.2.1", + "xtend": "^4.0.0" + } + }, + "node_modules/power-assert-context-formatter": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.2.0.tgz", + "integrity": "sha512-HLNEW8Bin+BFCpk/zbyKwkEu9W8/zThIStxGo7weYcFkKgMuGCHUJhvJeBGXDZf0Qm2xis4pbnnciGZiX0EpSg==", + "dev": true, + "dependencies": { + "core-js": "^2.0.0", + "power-assert-context-traversal": "^1.2.0" + } + }, + "node_modules/power-assert-context-reducer-ast": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-context-reducer-ast/-/power-assert-context-reducer-ast-1.2.0.tgz", + "integrity": "sha512-EgOxmZ/Lb7tw4EwSKX7ZnfC0P/qRZFEG28dx/690qvhmOJ6hgThYFm5TUWANDLK5NiNKlPBi5WekVGd2+5wPrw==", + "dev": true, + "dependencies": { + "acorn": "^5.0.0", + "acorn-es7-plugin": "^1.0.12", + "core-js": "^2.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.2.0" + } + }, + "node_modules/power-assert-context-traversal": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.2.0.tgz", + "integrity": "sha512-NFoHU6g2umNajiP2l4qb0BRWD773Aw9uWdWYH9EQsVwIZnog5bd2YYLFCVvaxWpwNzWeEfZIon2xtyc63026pQ==", + "dev": true, + "dependencies": { + "core-js": "^2.0.0", + "estraverse": "^4.1.0" + } + }, + "node_modules/power-assert-formatter": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz", + "integrity": "sha1-XcEl7VCj37HdomwZNH879Y7CiEo=", + "dev": true, + "dependencies": { + "core-js": "^2.0.0", + "power-assert-context-formatter": "^1.0.7", + "power-assert-context-reducer-ast": "^1.0.7", + "power-assert-renderer-assertion": "^1.0.7", + "power-assert-renderer-comparison": "^1.0.7", + "power-assert-renderer-diagram": "^1.0.7", + "power-assert-renderer-file": "^1.0.7" + } + }, + "node_modules/power-assert-renderer-assertion": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.2.0.tgz", + "integrity": "sha512-3F7Q1ZLmV2ZCQv7aV7NJLNK9G7QsostrhOU7U0RhEQS/0vhEqrRg2jEJl1jtUL4ZyL2dXUlaaqrmPv5r9kRvIg==", + "dev": true, + "dependencies": { + "power-assert-renderer-base": "^1.1.1", + "power-assert-util-string-width": "^1.2.0" + } + }, + "node_modules/power-assert-renderer-base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz", + "integrity": "sha1-lqZQxv0F7hvB9mtUrWFELIs/Y+s=", + "dev": true + }, + "node_modules/power-assert-renderer-comparison": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.2.0.tgz", + "integrity": "sha512-7c3RKPDBKK4E3JqdPtYRE9cM8AyX4LC4yfTvvTYyx8zSqmT5kJnXwzR0yWQLOavACllZfwrAGQzFiXPc5sWa+g==", + "dev": true, + "dependencies": { + "core-js": "^2.0.0", + "diff-match-patch": "^1.0.0", + "power-assert-renderer-base": "^1.1.1", + "stringifier": "^1.3.0", + "type-name": "^2.0.1" + } + }, + "node_modules/power-assert-renderer-diagram": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.2.0.tgz", + "integrity": "sha512-JZ6PC+DJPQqfU6dwSmpcoD7gNnb/5U77bU5KgNwPPa+i1Pxiz6UuDeM3EUBlhZ1HvH9tMjI60anqVyi5l2oNdg==", + "dev": true, + "dependencies": { + "core-js": "^2.0.0", + "power-assert-renderer-base": "^1.1.1", + "power-assert-util-string-width": "^1.2.0", + "stringifier": "^1.3.0" + } + }, + "node_modules/power-assert-renderer-file": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-file/-/power-assert-renderer-file-1.2.0.tgz", + "integrity": "sha512-/oaVrRbeOtGoyyd7e4IdLP/jIIUFJdqJtsYzP9/88R39CMnfF/S/rUc8ZQalENfUfQ/wQHu+XZYRMaCEZmEesg==", + "dev": true, + "dependencies": { + "power-assert-renderer-base": "^1.1.1" + } + }, + "node_modules/power-assert-util-string-width": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-util-string-width/-/power-assert-util-string-width-1.2.0.tgz", + "integrity": "sha512-lX90G0igAW0iyORTILZ/QjZWsa1MZ6VVY3L0K86e2eKun3S4LKPH4xZIl8fdeMYLfOjkaszbNSzf1uugLeAm2A==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/rc-config-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-3.0.0.tgz", + "integrity": "sha512-bwfUSB37TWkHfP+PPjb/x8BUjChFmmBK44JMfVnU7paisWqZl/o5k7ttCH+EQLnrbn2Aq8Fo1LAsyUiz+WF4CQ==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "js-yaml": "^3.12.0", + "json5": "^2.1.1", + "require-from-string": "^2.0.2" + } + }, + "node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/remark": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-14.0.1.tgz", + "integrity": "sha512-7zLG3u8EUjOGuaAS9gUNJPD2j+SqDqAFHv2g6WMpE5CU9rZ6e3IKDM12KHZ3x+YNje+NMAuN55yx8S5msGSx7Q==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "remark-parse": "^10.0.0", + "remark-stringify": "^10.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-cli": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-10.0.0.tgz", + "integrity": "sha512-Yc5kLsJ5vgiQJl6xMLLJHqPac6OSAC5DOqKQrtmzJxSdJby2Jgr+OpIAkWQYwvbNHEspNagyoQnuwK2UCWg73g==", + "dev": true, + "dependencies": { + "remark": "^14.0.0", + "unified-args": "^9.0.0" + }, + "bin": { + "remark": "cli.js" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-footnotes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-3.0.0.tgz", + "integrity": "sha512-ZssAvH9FjGYlJ/PBVKdSmfyPc3Cz4rTWgZLI4iE/SX8Nt5l3o3oEjv3wwG5VD7xOjktzdwp5coac+kJV9l4jgg==", + "dev": true, + "dependencies": { + "mdast-util-footnote": "^0.1.0", + "micromark-extension-footnote": "^0.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-frontmatter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-4.0.0.tgz", + "integrity": "sha512-0J+2czWAS9sz9baJJel4tTUnNhMI7wYgih99Hxhdeq2GpdI1Ctu0iol6zAsWw5xa+jLsZXNiwEnnJAJo3XX3hw==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-frontmatter": "^1.0.0", + "micromark-extension-frontmatter": "^1.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", + "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", + "dev": true, + "dependencies": { + "mdast-util-gfm": "^0.1.0", + "micromark-extension-gfm": "^0.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-9.1.0.tgz", + "integrity": "sha512-47ZaPj1HSs17nqsu3CPg4nIhaj+XTEXJM9cpFybhyA4lzVRZiRXy43BokbEjBt0f1fhY3coQoOh16jJeGBvrJg==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "remark-message-control": "^7.0.0", + "unified": "^10.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-fenced-code-flag": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-3.1.0.tgz", + "integrity": "sha512-s96DWERWUeDi3kcDbW6TQo4vRUsGJUNhT1XEsmUzYlwJJ+2uGit9O5dAxvEnwF3gZxp/09hPsQ+QSxilC1sxLg==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "unified": "^10.0.0", + "unified-lint-rule": "^2.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-no-shell-dollars": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-3.1.0.tgz", + "integrity": "sha512-f4+NPey3yzd9TpDka5Bs3W+MMJBPz6bQ7zK3M9Qc133lqZ81hKMGVRrOBafS1RNqD5htLZbbGyCoJa476QtW1w==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "unified": "^10.0.0", + "unified-lint-rule": "^2.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-message-control": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-7.1.0.tgz", + "integrity": "sha512-PNVCm0JV5DikNyrvPYUDN97rL7r+ddy/4GMJpbIiQMS6qJxHJpGdppWOp5YfKHlkrfzddUzTQB/MoS9YCHyNNg==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-comment-marker": "^2.0.0", + "unified": "^10.0.0", + "unified-message-control": "^4.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.0.tgz", + "integrity": "sha512-07ei47p2Xl7Bqbn9H2VYQYirnAFJPwdMuypdozWsSbnmrkgA2e2sZLZdnDNrrsxR4onmIzH/J6KXqKxCuqHtPQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-10.0.1.tgz", + "integrity": "sha512-380vOu9EHqRTDhI9RlPU2EKY1abUDEmxw9fW7pJ/8Jr1izk0UcdnZB30qiDDRYi6pGn5FnVf9Wd2iUeCWTqM7Q==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", + "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stringifier": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.4.0.tgz", + "integrity": "sha512-cNsMOqqrcbLcHTXEVmkw9y0fwDwkdgtZwlfyolzpQDoAE1xdNGhQhxBUfiDvvZIKl1hnUEgMv66nHwtMz3OjPw==", + "dev": true, + "dependencies": { + "core-js": "^2.0.0", + "traverse": "^0.6.6", + "type-name": "^2.0.1" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/structured-source": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/structured-source/-/structured-source-3.0.2.tgz", + "integrity": "sha1-3YAkJeD1PcSm56yjdSkBoczaevU=", + "dev": true, + "dependencies": { + "boundary": "^1.0.1" + } + }, + "node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/table": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", + "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/textlint": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.0.2.tgz", + "integrity": "sha512-pg453CN2xtLoqss9YVSKkEFJtJ1AB/9SWTxl11fgdqFPCOK2W/320CJRqSxo5bJFpIn5+6bjqkuPHS0cZWLPvg==", + "dev": true, + "dependencies": { + "@textlint/ast-node-types": "^12.0.0", + "@textlint/ast-traverse": "^12.0.2", + "@textlint/feature-flag": "^12.0.2", + "@textlint/fixer-formatter": "^12.0.2", + "@textlint/kernel": "^12.0.2", + "@textlint/linter-formatter": "^12.0.2", + "@textlint/module-interop": "^12.0.2", + "@textlint/textlint-plugin-markdown": "^12.0.2", + "@textlint/textlint-plugin-text": "^12.0.2", + "@textlint/types": "^12.0.2", + "@textlint/utils": "^12.0.2", + "debug": "^4.3.2", + "deep-equal": "^1.1.1", + "file-entry-cache": "^5.0.1", + "get-stdin": "^5.0.1", + "glob": "^7.1.7", + "is-file": "^1.0.0", + "log-symbols": "^1.0.2", + "md5": "^2.3.0", + "mkdirp": "^0.5.0", + "optionator": "^0.9.1", + "path-to-glob-pattern": "^1.0.2", + "rc-config-loader": "^3.0.0", + "read-pkg": "^1.1.0", + "read-pkg-up": "^3.0.0", + "structured-source": "^3.0.2", + "try-resolve": "^1.0.1", + "unique-concat": "^0.2.2" + }, + "bin": { + "textlint": "bin/textlint.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/textlint-rule-common-misspellings": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/textlint-rule-common-misspellings/-/textlint-rule-common-misspellings-1.0.1.tgz", + "integrity": "sha1-jEEzzzu1mqFZGZ0sm87RJBM2V3Q=", + "dev": true, + "dependencies": { + "misspellings": "^1.0.1", + "textlint-rule-helper": "^1.1.5" + } + }, + "node_modules/textlint-rule-helper": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/textlint-rule-helper/-/textlint-rule-helper-1.2.0.tgz", + "integrity": "sha1-vmjUelFGsW3RFieMmut701YxzNo=", + "dev": true, + "dependencies": { + "unist-util-visit": "^1.1.0" + } + }, + "node_modules/textlint-rule-helper/node_modules/unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", + "dev": true + }, + "node_modules/textlint-rule-helper/node_modules/unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "dev": true, + "dependencies": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "node_modules/textlint-rule-helper/node_modules/unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "dev": true, + "dependencies": { + "unist-util-is": "^3.0.0" + } + }, + "node_modules/textlint-rule-terminology": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/textlint-rule-terminology/-/textlint-rule-terminology-2.1.5.tgz", + "integrity": "sha512-VW+ea4ByLPddSUqoFkVVJF8zWnO8kqKwvC681wGFAjI4CYz9WhjEQH1ikhoEHXnd5AFXNArcjyoa8hoihrXy0w==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15", + "strip-json-comments": "^3.0.1", + "textlint-rule-helper": "^2.1.1" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/textlint-rule-terminology/node_modules/@textlint/ast-node-types": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.3.tgz", + "integrity": "sha512-qi2jjgO6Tn3KNPGnm6B7p6QTEPvY95NFsIAaJuwbulur8iJUEenp1OnoUfiDaC/g2WPPEFkcfXpmnu8XEMFo2A==", + "dev": true + }, + "node_modules/textlint-rule-terminology/node_modules/@textlint/types": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.5.tgz", + "integrity": "sha512-80P6fcqgsG9bP6JgR6W/E/oIx+71pplaicYCvvB4vMIeGk0OnWls4Q21kCpDYmq/C/ABtZ/Gy/Ov/8ExQPeQ7A==", + "dev": true, + "dependencies": { + "@textlint/ast-node-types": "^4.4.3" + } + }, + "node_modules/textlint-rule-terminology/node_modules/textlint-rule-helper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/textlint-rule-helper/-/textlint-rule-helper-2.2.0.tgz", + "integrity": "sha512-9S5CsgQuQwPjM2wvr4JGdpkLf+pR9gOjedSQFa/Dkrbh+D9MXt1LIR4Jvx1RujKtt2nq42prmEX2q3xOxyUcIQ==", + "dev": true, + "dependencies": { + "@textlint/ast-node-types": "^4.4.3", + "@textlint/types": "^1.5.5", + "structured-source": "^3.0.2", + "unist-util-visit": "^1.1.0" + } + }, + "node_modules/textlint-rule-terminology/node_modules/unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", + "dev": true + }, + "node_modules/textlint-rule-terminology/node_modules/unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "dev": true, + "dependencies": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "node_modules/textlint-rule-terminology/node_modules/unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "dev": true, + "dependencies": { + "unist-util-is": "^3.0.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/to-vfile": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-7.2.2.tgz", + "integrity": "sha512-7WL+coet3qyaYb5vrVrfLtOUHgNv9E1D5SIsyVKmHKcgZefy77WMQRk7FByqGKNInoHOlY6xkTGymo29AwjUKg==", + "dev": true, + "dependencies": { + "is-buffer": "^2.0.0", + "vfile": "^5.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/to-vfile/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/traverse": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", + "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", + "dev": true + }, + "node_modules/trough": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.0.2.tgz", + "integrity": "sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/try-resolve": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz", + "integrity": "sha1-z95vq9ctY+V5fPqrhzq76OcA6RI=", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/type-name/-/type-name-2.0.2.tgz", + "integrity": "sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q=", + "dev": true + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "node_modules/unified": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.0.tgz", + "integrity": "sha512-4U3ru/BRXYYhKbwXV6lU6bufLikoAavTwev89H5UxY8enDFaAT2VXmIXYNm6hb5oHPng/EXr77PVyDFcptbk5g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-args": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/unified-args/-/unified-args-9.0.2.tgz", + "integrity": "sha512-qSqryjoqfJSII4E4Z2Jx7MhXX2MuUIn6DsrlmL8UnWFdGtrWvEtvm7Rx5fKT5TPUz7q/Fb4oxwIHLCttvAuRLQ==", + "dev": true, + "dependencies": { + "@types/text-table": "^0.2.0", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "chokidar": "^3.0.0", + "fault": "^2.0.0", + "json5": "^2.0.0", + "minimist": "^1.0.0", + "text-table": "^0.2.0", + "unified-engine": "^9.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-args/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/unified-args/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/unified-args/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unified-engine": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-9.0.4.tgz", + "integrity": "sha512-NFI+jC3DWZ23eBsWkOW2havz47DPG/DSyJEvBH+qA5cQHF6zlgiJYev7ksb/naOypZZ+cfhaCxCRo2BqrysYEw==", + "dev": true, + "dependencies": { + "@types/concat-stream": "^1.0.0", + "@types/debug": "^4.0.0", + "@types/is-empty": "^1.0.0", + "@types/js-yaml": "^4.0.0", + "@types/node": "^16.0.0", + "@types/unist": "^2.0.0", + "concat-stream": "^2.0.0", + "debug": "^4.0.0", + "fault": "^2.0.0", + "glob": "^7.0.0", + "ignore": "^5.0.0", + "is-buffer": "^2.0.0", + "is-empty": "^1.0.0", + "is-plain-obj": "^4.0.0", + "js-yaml": "^4.0.0", + "load-plugin": "^4.0.0", + "parse-json": "^5.0.0", + "to-vfile": "^7.0.0", + "trough": "^2.0.0", + "unist-util-inspect": "^7.0.0", + "vfile-message": "^3.0.0", + "vfile-reporter": "^7.0.0", + "vfile-statistics": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-engine/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/unified-engine/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/unified-engine/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/unified-engine/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unified-lint-rule": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-2.1.0.tgz", + "integrity": "sha512-pB2Uht3w+A9ceWXMYI0YWwxCTqC5on6jrApWDWSsYDBjaljSv8s64qdHHMCXFIUAGdd6V/XWrVMxiboHOAXo3Q==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "trough": "^2.0.0", + "unified": "^10.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-message-control": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-4.0.0.tgz", + "integrity": "sha512-1b92N+VkPHftOsvXNOtkJm4wHlr+UDmTBF2dUzepn40oy9NxanJ9xS1RwUBTjXJwqr2K0kMbEyv1Krdsho7+Iw==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit": "^3.0.0", + "vfile": "^5.0.0", + "vfile-location": "^4.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-message-control/node_modules/unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-message-control/node_modules/unist-util-visit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", + "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-message-control/node_modules/unist-util-visit-parents": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", + "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-concat": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/unique-concat/-/unique-concat-0.2.2.tgz", + "integrity": "sha1-khD5vcqsxeHjkpSQ18AZ35bxhxI=", + "dev": true + }, + "node_modules/unist-util-generated": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", + "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-inspect": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/unist-util-inspect/-/unist-util-inspect-7.0.0.tgz", + "integrity": "sha512-2Utgv78I7PUu461Y9cdo+IUiiKSKpDV5CE/XD6vTj849a3xlpDAScvSJ6cQmtFBGgAmCn2wR7jLuXhpg1XLlJw==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.1.tgz", + "integrity": "sha512-mgy/zI9fQ2HlbOtTdr2w9lhVaiFUHWQnZrFF2EUoVOqtAUdzqMtNiD99qA5a1IcjWVR8O6aVYE9u7Z2z1v0SQA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", + "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.0.tgz", + "integrity": "sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit/node_modules/unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit/node_modules/unist-util-visit-parents": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz", + "integrity": "sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universal-deep-strict-equal": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/universal-deep-strict-equal/-/universal-deep-strict-equal-1.2.2.tgz", + "integrity": "sha1-DaSsL3PP95JMgfpN4BjKViyisKc=", + "dev": true, + "dependencies": { + "array-filter": "^1.0.0", + "indexof": "0.0.1", + "object-keys": "^1.0.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vfile": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.1.0.tgz", + "integrity": "sha512-4o7/DJjEaFPYSh0ckv5kcYkJTHQgCKdL8ozMM1jLAxO9ox95IzveDPXCZp08HamdWq8JXTkClDvfAKaeLQeKtg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz", + "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.2.tgz", + "integrity": "sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-7.0.2.tgz", + "integrity": "sha512-1bYxpyhl8vhAICiKR59vYyZHIOWsF7P1nV6xjaz3ZWAyOQDQhR4DjlOZo14+PiV9oLEWIrolvGHs0/2Bnaw5Vw==", + "dev": true, + "dependencies": { + "@types/supports-color": "^8.0.0", + "string-width": "^5.0.0", + "supports-color": "^9.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-sort": "^3.0.0", + "vfile-statistics": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/vfile-reporter/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/vfile-reporter/node_modules/has-flag": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-5.0.1.tgz", + "integrity": "sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vfile-reporter/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vfile-reporter/node_modules/string-width": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.0.1.tgz", + "integrity": "sha512-5ohWO/M4//8lErlUUtrFy3b11GtNOuMOU0ysKCDXFcfXuuvUXu95akgj/i8ofmaGdN0hCqyl6uu9i8dS/mQp5g==", + "dev": true, + "dependencies": { + "emoji-regex": "^9.2.2", + "is-fullwidth-code-point": "^4.0.0", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vfile-reporter/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/vfile-reporter/node_modules/supports-color": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.0.2.tgz", + "integrity": "sha512-ii6tc8ImGFrgMPYq7RVAMKkhPo9vk8uA+D3oKbJq/3Pk2YSMv1+9dUAesa9UxMbxBTvxwKTQffBahNVNxEvM8Q==", + "dev": true, + "dependencies": { + "has-flag": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/vfile-sort": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-3.0.0.tgz", + "integrity": "sha512-fJNctnuMi3l4ikTVcKpxTbzHeCgvDhnI44amA3NVDvA6rTC6oKCFpCVyT5n2fFMr3ebfr+WVQZedOCd73rzSxg==", + "dev": true, + "dependencies": { + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-statistics": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-2.0.0.tgz", + "integrity": "sha512-foOWtcnJhKN9M2+20AOTlWi2dxNfAoeNIoxD5GXcO182UJyId4QrXa41fWrgcfV3FWTjdEDy3I4cpLVcQscIMA==", + "dev": true, + "dependencies": { + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile/node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "dependencies": { + "mkdirp": "^0.5.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/xml-escape": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xml-escape/-/xml-escape-1.1.0.tgz", + "integrity": "sha1-OQTBQ/qOs6ADDsZG0pAqLxtwbEQ=", + "dev": true + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/zwitch": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", + "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + }, "dependencies": { "@azu/format-text": { "version": "1.0.1", @@ -20,18 +6234,18 @@ } }, "@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", + "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", "dev": true, "requires": { "@babel/highlight": "^7.14.5" } }, "@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/highlight": { @@ -98,9 +6312,9 @@ } }, "@textlint/ast-node-types": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.3.5.tgz", - "integrity": "sha512-syl8VE34DQDTV7+IADP1jYtGsxTC9MmCKLmpJX90G6nNv9CzgAZIukd7WMiJFZpFgcDAlibEaCKlJRxjfEmmPA==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.0.0.tgz", + "integrity": "sha512-qUjmlpz1vR3AStBA9RPDCVT0/pGtePvBJ5Vb/0PzTrnr04iFktG6P6B1VOmgTh8J9Kl/FonQFo3A9M1Q3UH+JA==", "dev": true }, "@textlint/ast-tester": { @@ -111,23 +6325,6 @@ "requires": { "@textlint/ast-node-types": "^12.0.0", "debug": "^4.3.2" - }, - "dependencies": { - "@textlint/ast-node-types": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.0.0.tgz", - "integrity": "sha512-qUjmlpz1vR3AStBA9RPDCVT0/pGtePvBJ5Vb/0PzTrnr04iFktG6P6B1VOmgTh8J9Kl/FonQFo3A9M1Q3UH+JA==", - "dev": true - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } } }, "@textlint/ast-traverse": { @@ -137,14 +6334,6 @@ "dev": true, "requires": { "@textlint/ast-node-types": "^12.0.0" - }, - "dependencies": { - "@textlint/ast-node-types": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.0.0.tgz", - "integrity": "sha512-qUjmlpz1vR3AStBA9RPDCVT0/pGtePvBJ5Vb/0PzTrnr04iFktG6P6B1VOmgTh8J9Kl/FonQFo3A9M1Q3UH+JA==", - "dev": true - } } }, "@textlint/feature-flag": { @@ -169,105 +6358,6 @@ "strip-ansi": "^6.0.0", "text-table": "^0.2.0", "try-resolve": "^1.0.1" - }, - "dependencies": { - "@textlint/ast-node-types": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.0.0.tgz", - "integrity": "sha512-qUjmlpz1vR3AStBA9RPDCVT0/pGtePvBJ5Vb/0PzTrnr04iFktG6P6B1VOmgTh8J9Kl/FonQFo3A9M1Q3UH+JA==", - "dev": true - }, - "@textlint/types": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.0.2.tgz", - "integrity": "sha512-w5aWSCd1sot1waiYw8KnmJNY1q+k9LDoaA6xjGbBuVBGJl0TLXIZoOP8HYFUcKFfJRpqGGob1geTHiyFdnyS0w==", - "dev": true, - "requires": { - "@textlint/ast-node-types": "^12.0.0" - } - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } } }, "@textlint/kernel": { @@ -286,32 +6376,6 @@ "debug": "^4.3.2", "deep-equal": "^1.1.1", "structured-source": "^3.0.2" - }, - "dependencies": { - "@textlint/ast-node-types": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.0.0.tgz", - "integrity": "sha512-qUjmlpz1vR3AStBA9RPDCVT0/pGtePvBJ5Vb/0PzTrnr04iFktG6P6B1VOmgTh8J9Kl/FonQFo3A9M1Q3UH+JA==", - "dev": true - }, - "@textlint/types": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.0.2.tgz", - "integrity": "sha512-w5aWSCd1sot1waiYw8KnmJNY1q+k9LDoaA6xjGbBuVBGJl0TLXIZoOP8HYFUcKFfJRpqGGob1geTHiyFdnyS0w==", - "dev": true, - "requires": { - "@textlint/ast-node-types": "^12.0.0" - } - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } } }, "@textlint/linter-formatter": { @@ -336,115 +6400,6 @@ "text-table": "^0.2.0", "try-resolve": "^1.0.1", "xml-escape": "^1.1.0" - }, - "dependencies": { - "@textlint/ast-node-types": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.0.0.tgz", - "integrity": "sha512-qUjmlpz1vR3AStBA9RPDCVT0/pGtePvBJ5Vb/0PzTrnr04iFktG6P6B1VOmgTh8J9Kl/FonQFo3A9M1Q3UH+JA==", - "dev": true - }, - "@textlint/types": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.0.2.tgz", - "integrity": "sha512-w5aWSCd1sot1waiYw8KnmJNY1q+k9LDoaA6xjGbBuVBGJl0TLXIZoOP8HYFUcKFfJRpqGGob1geTHiyFdnyS0w==", - "dev": true, - "requires": { - "@textlint/ast-node-types": "^12.0.0" - } - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } } }, "@textlint/markdown-to-ast": { @@ -463,20 +6418,29 @@ "unified": "^9.2.1" }, "dependencies": { - "@textlint/ast-node-types": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.0.0.tgz", - "integrity": "sha512-qUjmlpz1vR3AStBA9RPDCVT0/pGtePvBJ5Vb/0PzTrnr04iFktG6P6B1VOmgTh8J9Kl/FonQFo3A9M1Q3UH+JA==", + "bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", "dev": true }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true }, "fault": { "version": "1.0.4", @@ -487,6 +6451,59 @@ "format": "^0.2.0" } }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, "mdast-util-frontmatter": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz", @@ -496,6 +6513,22 @@ "micromark-extension-frontmatter": "^0.2.0" } }, + "mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true + }, + "micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, + "requires": { + "debug": "^4.0.0", + "parse-entities": "^2.0.0" + } + }, "micromark-extension-frontmatter": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz", @@ -505,6 +6538,20 @@ "fault": "^1.0.0" } }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, "remark-frontmatter": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz", @@ -515,10 +6562,25 @@ "micromark-extension-frontmatter": "^0.2.0" } }, + "remark-parse": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", + "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", + "dev": true, + "requires": { + "mdast-util-from-markdown": "^0.8.0" + } + }, + "trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "dev": true + }, "unified": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.1.tgz", - "integrity": "sha512-juWjuI8Z4xFg8pJbnEZ41b5xjGUWGHqXALmBZ3FC3WX0PIx1CZBIIJ6mXbYMcf6Yw4Fi0rFUTA1cdz/BglbOhA==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", "dev": true, "requires": { "bail": "^1.0.0", @@ -528,6 +6590,37 @@ "trough": "^1.0.0", "vfile": "^4.0.0" } + }, + "unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.2" + } + }, + "vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + } + }, + "vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } } } }, @@ -545,32 +6638,6 @@ "requires": { "@textlint/types": "^12.0.2", "debug": "^4.3.2" - }, - "dependencies": { - "@textlint/ast-node-types": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.0.0.tgz", - "integrity": "sha512-qUjmlpz1vR3AStBA9RPDCVT0/pGtePvBJ5Vb/0PzTrnr04iFktG6P6B1VOmgTh8J9Kl/FonQFo3A9M1Q3UH+JA==", - "dev": true - }, - "@textlint/types": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.0.2.tgz", - "integrity": "sha512-w5aWSCd1sot1waiYw8KnmJNY1q+k9LDoaA6xjGbBuVBGJl0TLXIZoOP8HYFUcKFfJRpqGGob1geTHiyFdnyS0w==", - "dev": true, - "requires": { - "@textlint/ast-node-types": "^12.0.0" - } - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } } }, "@textlint/text-to-ast": { @@ -580,14 +6647,6 @@ "dev": true, "requires": { "@textlint/ast-node-types": "^12.0.0" - }, - "dependencies": { - "@textlint/ast-node-types": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.0.0.tgz", - "integrity": "sha512-qUjmlpz1vR3AStBA9RPDCVT0/pGtePvBJ5Vb/0PzTrnr04iFktG6P6B1VOmgTh8J9Kl/FonQFo3A9M1Q3UH+JA==", - "dev": true - } } }, "@textlint/textlint-plugin-markdown": { @@ -609,12 +6668,12 @@ } }, "@textlint/types": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.4.6.tgz", - "integrity": "sha512-hoKPvIzNf+vI0goRk90HfsVUbXkAp4BfpvRxh51TGqVG27dlYrQJZkYheuUNUAwyj0Id09qzVwXno/xQPMYPcg==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.0.2.tgz", + "integrity": "sha512-w5aWSCd1sot1waiYw8KnmJNY1q+k9LDoaA6xjGbBuVBGJl0TLXIZoOP8HYFUcKFfJRpqGGob1geTHiyFdnyS0w==", "dev": true, "requires": { - "@textlint/ast-node-types": "^4.3.5" + "@textlint/ast-node-types": "^12.0.0" } }, "@textlint/utils": { @@ -641,31 +6700,37 @@ "@types/ms": "*" } }, - "@types/hast": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", - "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", + "@types/estree": { + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", + "dev": true + }, + "@types/estree-jsx": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-0.0.1.tgz", + "integrity": "sha512-gcLAYiMfQklDCPjQegGn0TBAn9it05ISEsEhlKQUddIk7o2XDokOcTN7HBO8tznM0D9dGezvHEfRZBfZf6me0A==", "dev": true, "requires": { - "@types/unist": "*" + "@types/estree": "*" } }, "@types/is-empty": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.0.tgz", - "integrity": "sha512-brJKf2boFhUxTDxlpI7cstwiUtA2ovm38UzFTi9aZI6//ARncaV+Q5ALjCaJqXaMtdZk/oPTJnSutugsZR6h8A==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.1.tgz", + "integrity": "sha512-a3xgqnFTuNJDm1fjsTjHocYJ40Cz3t8utYpi5GNaxzrJC2HSD08ym+whIL7fNqiqBCdM9bcqD1H/tORWAFXoZw==", "dev": true }, "@types/js-yaml": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.2.tgz", - "integrity": "sha512-KbeHS/Y4R+k+5sWXEYzAZKuB1yQlZtEghuhRxrVRLaqhtoG5+26JwQsa4HyS3AWX8v1Uwukma5HheduUDskasA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.3.tgz", + "integrity": "sha512-5t9BhoORasuF5uCPr+d5/hdB++zRFUTMIZOzbNkr+jZh3yQht4HYbRDyj9fY8n2TZT30iW9huzav73x4NikqWg==", "dev": true }, "@types/mdast": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz", - "integrity": "sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", "dev": true, "requires": { "@types/unist": "*" @@ -678,21 +6743,9 @@ "dev": true }, "@types/node": { - "version": "16.4.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.4.10.tgz", - "integrity": "sha512-TmVHsm43br64js9BqHWqiDZA+xMtbUpI1MBIA0EyiBmoV9pcEYFOSdj5fr6enZNfh4fChh+AGOLIzGwJnkshyQ==", - "dev": true - }, - "@types/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-ARATsLdrGPUnaBvxLhUlnltcMgn7pQG312S8ccdYlnyijabrX9RN/KN/iGj9Am96CoW8e/K9628BA7Bv4XHdrA==", - "dev": true - }, - "@types/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@types/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-vdna8kjLGljgtPnYN6MBD2UwX62QE0EFLj9QlLXvg6dEu66NksXB900BNguBCMZZY2D9SSqncUskM23vT3uvWQ==", + "version": "16.10.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.10.3.tgz", + "integrity": "sha512-ho3Ruq+fFnBrZhUYI46n/bV2GjwzSkwuT4dTf0GkuNFmnb8nq4ny2z9JEVemFi6bdEJanHLlYfy9c6FN9B9McQ==", "dev": true }, "@types/supports-color": { @@ -708,15 +6761,27 @@ "dev": true }, "@types/unist": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", - "integrity": "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", + "dev": true + }, + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "acorn-es7-plugin": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz", + "integrity": "sha1-8u4fMiipDurRJF+asZIusucdM2s=", "dev": true }, "ajv": { - "version": "8.6.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.1.tgz", - "integrity": "sha512-42VLtQUOLefAvKFAQIxIZDaThq6om/PrfP0CYk3/vn+y4BMNkKnbli8ON2QCiHov4KkzOSJ/xSoBJdayiiYvVQ==", + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz", + "integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -726,19 +6791,16 @@ } }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "anymatch": { "version": "3.1.2", @@ -759,6 +6821,12 @@ "sprintf-js": "~1.0.2" } }, + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -766,15 +6834,15 @@ "dev": true }, "bail": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.4.tgz", - "integrity": "sha512-S8vuDB4w6YpRhICUDET3guPlQpaJl7od94tpZ0Fvnyp+MKW/HyDTcRDck+29C9g+d/qQHnddRH3+94kZdrW0Ww==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.1.tgz", + "integrity": "sha512-d5FoTAr2S5DSUPKl85WNm2yUwsINN8eidIdIwsOge2t33DaOfOdSmmsI11jMN3GmALCXaw+Y6HMVHDzePshFAA==", "dev": true }, "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "binary-extensions": { @@ -844,6 +6912,12 @@ "get-intrinsic": "^1.0.2" } }, + "call-signature": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", + "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=", + "dev": true + }, "camelcase": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", @@ -857,37 +6931,45 @@ "dev": true }, "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } } }, "character-entities": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.3.tgz", - "integrity": "sha512-yB4oYSAa9yLcGyTbB4ItFwHw43QHdH129IJ5R+WvxOkWlyFnR5FAaBNnUq4mcxsTVZGh28bHoeTHMKXH1wZf3w==", - "dev": true - }, - "character-entities-html4": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.0.0.tgz", - "integrity": "sha512-dwT2xh5ZhUAjyP96k57ilMKoTQyASaw9IAMR9U5c1lCu2RUni6O6jxfpUEdO2RcPT6TJFvr8pqsbami4Jk+2oA==", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.0.tgz", + "integrity": "sha512-oHqMj3eAuJ77/P5PaIRcqk+C3hdfNwyCD2DAUcD5gyXkegAuF2USC40CEqPscDk4I8FRGMTojGJQkXDsN5QlJA==", "dev": true }, "character-entities-legacy": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.3.tgz", - "integrity": "sha512-YAxUpPoPwxYFsslbdKkhrGnXAtXoHNgYjlBM3WMXkWGTl5RsY3QmOyhwAgL8Nxm9l5LBThXGawxKPn68y6/fww==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-2.0.0.tgz", + "integrity": "sha512-YwaEtEvWLpFa6Wh3uVLrvirA/ahr9fki/NUd/Bd4OR6EdJ8D22hovYQEOUCBfQfcqnC4IAMGMsHXY1eXgL4ZZA==", "dev": true }, "character-reference-invalid": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.3.tgz", - "integrity": "sha512-VOq6PRzQBam/8Jm6XBGk2fNEnHXAdGd6go0rtd4weAGECBamHDwwCQSOT12TACIYUZegUXnV6xBXqUssijtxIg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.0.tgz", + "integrity": "sha512-pE3Z15lLRxDzWJy7bBHBopRwfI20sbrMVLQTC7xsPglCHf4Wv1e167OgYAFP78co2XlhojDyAqA+IAJse27//g==", "dev": true }, "charenc": { @@ -933,12 +7015,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "comma-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", - "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==", - "dev": true - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -957,6 +7033,12 @@ "typedarray": "^0.0.6" } }, + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "dev": true + }, "crypt": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", @@ -964,12 +7046,12 @@ "dev": true }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "deep-equal": { @@ -987,9 +7069,9 @@ } }, "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, "define-properties": { @@ -1007,12 +7089,44 @@ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, + "diff-match-patch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", + "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", + "dev": true + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "empower": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/empower/-/empower-1.3.1.tgz", + "integrity": "sha512-uB6/ViBaawOO/uujFADTK3SqdYlxYNn+N4usK9MRKZ4Hbn/1QSy8k2PezxCA2/+JGbF8vd/eOfghZ90oOSDZCA==", + "dev": true, + "requires": { + "core-js": "^2.0.0", + "empower-core": "^1.2.0" + } + }, + "empower-core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/empower-core/-/empower-core-1.2.0.tgz", + "integrity": "sha512-g6+K6Geyc1o6FdXs9HwrXleCFan7d66G5xSCfSF7x1mJDCes6t0om9lFQG3zOrzh3Bkb/45N0cZ5Gqsf7YrzGQ==", + "dev": true, + "requires": { + "call-signature": "0.0.2", + "core-js": "^2.0.0" + } + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -1034,6 +7148,21 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, + "espurify": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-1.8.1.tgz", + "integrity": "sha512-ZDko6eY/o+D/gHCWyHTU85mKDgYcS4FJj7S+YD6WIInm7GQ6AnOjmcL4+buFV/JOztVLELi/7MmuGU5NHta0Mg==", + "dev": true, + "requires": { + "core-js": "^2.0.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -1154,9 +7283,9 @@ "dev": true }, "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -1177,9 +7306,9 @@ } }, "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", + "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", "dev": true }, "has": { @@ -1198,14 +7327,6 @@ "dev": true, "requires": { "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } } }, "has-flag": { @@ -1220,123 +7341,13 @@ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, - "hast-util-from-parse5": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.0.tgz", - "integrity": "sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==", + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, "requires": { - "@types/hast": "^2.0.0", - "@types/parse5": "^6.0.0", - "@types/unist": "^2.0.0", - "hastscript": "^7.0.0", - "property-information": "^6.0.0", - "vfile": "^5.0.0", - "vfile-location": "^4.0.0", - "web-namespaces": "^2.0.0" - }, - "dependencies": { - "unist-util-stringify-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", - "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "vfile": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.1.0.tgz", - "integrity": "sha512-4o7/DJjEaFPYSh0ckv5kcYkJTHQgCKdL8ozMM1jLAxO9ox95IzveDPXCZp08HamdWq8JXTkClDvfAKaeLQeKtg==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } - }, - "vfile-message": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.2.tgz", - "integrity": "sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } - } - } - }, - "hast-util-is-element": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.1.tgz", - "integrity": "sha512-ag0fiZfRWsPiR1udvnSbaazJLGv8qd8E+/e3rW8rUZhbKG4HNJmFL4QkEceN+22BgE+uozXY30z/s+2dL6Z++g==", - "dev": true, - "requires": { - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0" - } - }, - "hast-util-parse-selector": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.0.tgz", - "integrity": "sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==", - "dev": true, - "requires": { - "@types/hast": "^2.0.0" - } - }, - "hast-util-to-html": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.2.tgz", - "integrity": "sha512-ipLhUTMyyJi9F/LXaNDG9BrRdshP6obCfmUZYbE/+T639IdzqAOkKN4DyrEyID0gbb+rsC3PKf0XlviZwzomhw==", - "dev": true, - "requires": { - "@types/hast": "^2.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-is-element": "^2.0.0", - "hast-util-whitespace": "^2.0.0", - "html-void-elements": "^2.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "unist-util-is": "^5.0.0" - }, - "dependencies": { - "ccount": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.0.tgz", - "integrity": "sha512-VOR0NWFYX65n9gELQdcpqsie5L5ihBXuZGAgaPEp/U7IOSjnPMEH6geE+2f6lcekaNEfWzAHS45mPvSo5bqsUA==", - "dev": true - }, - "unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", - "dev": true - } - } - }, - "hast-util-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", - "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==", - "dev": true - }, - "hastscript": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.0.2.tgz", - "integrity": "sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==", - "dev": true, - "requires": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-parse-selector": "^3.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0" + "has-symbols": "^1.0.2" } }, "hosted-git-info": { @@ -1345,12 +7356,6 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "html-void-elements": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.0.tgz", - "integrity": "sha512-4OYzQQsBt0G9bJ/nM9/DDsjm4+fVdzAaPJJcWk5QwA3GIAPxQEeOR0rsI8HbDHQz5Gta8pVvGnnTNSbZVEVvkQ==", - "dev": true - }, "ignore": { "version": "5.1.8", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", @@ -1366,6 +7371,12 @@ "builtins": "^4.0.0" } }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1389,28 +7400,29 @@ "dev": true }, "is-alphabetical": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.3.tgz", - "integrity": "sha512-eEMa6MKpHFzw38eKm56iNNi6GJ7lf6aLLio7Kr23sJPAECscgRtZvOBYybejWDQ2bM949Y++61PY+udzj5QMLA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.0.tgz", + "integrity": "sha512-5OV8Toyq3oh4eq6sbWTYzlGdnMT/DPI5I0zxUBxjiigQsZycpkKF3kskkao3JyYGuYDHvhgJF+DrjMQp9SX86w==", "dev": true }, "is-alphanumerical": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.3.tgz", - "integrity": "sha512-A1IGAPO5AW9vSh7omxIlOGwIqEvpW/TA+DksVOPM5ODuxKlZS09+TEM1E3275lJqO2oJ38vDpeAL3DCIiHE6eA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.0.tgz", + "integrity": "sha512-t+2GlJ+hO9yagJ+jU3+HSh80VKvz/3cG2cxbGGm4S0hjKuhWQXgPVUVOZz3tqZzMjhmphZ+1TIJTlRZRoe6GCQ==", "dev": true, "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" } }, "is-arguments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, "requires": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-arrayish": { @@ -1429,30 +7441,33 @@ } }, "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-core-module": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", - "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", + "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", "dev": true, "requires": { "has": "^1.0.3" } }, "is-date-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", - "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", - "dev": true + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-decimal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.3.tgz", - "integrity": "sha512-bvLSwoDg2q6Gf+E2LEPiklHZxxiSi3XAh4Mav65mKqTfCO1HM3uBs24TjEH8iJX3bbDdLXKJXBTmGzuTUuAEjQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.0.tgz", + "integrity": "sha512-QfrfjQV0LjoWQ1K1XSoEZkTAzSa14RKVMa5zg3SdAfzEmQzRM4+tbSFWb78creCeA9rNBzaZal92opi1TwPWZw==", "dev": true }, "is-empty": { @@ -1474,24 +7489,27 @@ "dev": true }, "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" } }, "is-hexadecimal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz", - "integrity": "sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.0.tgz", + "integrity": "sha512-vGOtYkiaxwIiR0+Ng/zNId+ZZehGfINwTzdrDqc6iubbnQWhnPuYymOzOKUDqa2cSl59yHnEh2h6MvRLQsyNug==", "dev": true }, "is-number": { @@ -1501,19 +7519,19 @@ "dev": true }, "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz", + "integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==", "dev": true }, "is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" + "has-tostringtag": "^1.0.0" } }, "is-utf8": { @@ -1529,9 +7547,9 @@ "dev": true }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -1557,9 +7575,9 @@ "dev": true }, "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", "dev": true, "requires": { "minimist": "^1.2.5" @@ -1695,54 +7713,12 @@ "dev": true, "requires": { "chalk": "^1.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } } }, "longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.0.tgz", + "integrity": "sha512-XhUjWR5CFaQ03JOP+iSDS9koy8T5jfoImCZ4XprElw3BXsSk4MpVYOLw/6LTDKZhO13PlAXnB5gS4MHQTpkSOw==", "dev": true }, "lru-cache": { @@ -1772,21 +7748,16 @@ "charenc": "0.0.2", "crypt": "0.0.2", "is-buffer": "~1.1.6" - }, - "dependencies": { - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - } } }, "mdast-comment-marker": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-2.0.0.tgz", - "integrity": "sha512-LQ4sf7vUzxz4mQQlzzBDgjaCJO5A0lkIAT9TyeNMfqaP31ooP1Qw9hprf7/V3NCo5FA1nvo5gbnfLVRY79QlDQ==", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-2.1.0.tgz", + "integrity": "sha512-/+Cfm8A83PjkqjQDB9iYqHESGuXlriCWAwRGPJjkYmxXrF4r6saxeUlOKNrf+SogTwg9E8uyHRCFHLG6/BAAdA==", + "dev": true, + "requires": { + "mdast-util-mdx-expression": "^1.1.0" + } }, "mdast-util-find-and-replace": { "version": "1.1.1", @@ -1804,22 +7775,6 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true - }, - "unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", - "dev": true - }, - "unist-util-visit-parents": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", - "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^4.0.0" - } } } }, @@ -1833,6 +7788,78 @@ "micromark": "~2.11.0" }, "dependencies": { + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true + }, + "mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + } + }, + "mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true + }, "micromark": { "version": "2.11.4", "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", @@ -1842,21 +7869,7 @@ "debug": "^4.0.0", "parse-entities": "^2.0.0" } - } - } - }, - "mdast-util-from-markdown": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.1.tgz", - "integrity": "sha512-qJXNcFcuCSPqUF0Tb0uYcFDIq67qwB3sxo9RPdf9vG8T90ViKnksFqdB/Coq2a7sTnxL/Ify2y7aIQXDkQFH0w==", - "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^1.0.0", - "micromark": "~2.10.0", - "parse-entities": "^2.0.0" - }, - "dependencies": { + }, "parse-entities": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", @@ -1870,9 +7883,35 @@ "is-decimal": "^1.0.0", "is-hexadecimal": "^1.0.0" } + }, + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true } } }, + "mdast-util-from-markdown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.0.3.tgz", + "integrity": "sha512-8/GPJsE3h73C+PBFJ3cCdvegz07mLS8/5NfuIsP8q/cw/Ph/aximc6OYdfwerwcZqTYVu7WeXm/8+RDztxreZQ==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "parse-entities": "^3.0.0", + "power-assert": "^1.0.0", + "unist-util-stringify-position": "^3.0.0" + } + }, "mdast-util-frontmatter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-1.0.0.tgz", @@ -1895,6 +7934,58 @@ "mdast-util-to-markdown": "^0.6.1" }, "dependencies": { + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true + }, "mdast-util-to-markdown": { "version": "0.6.5", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", @@ -1914,6 +8005,26 @@ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", "dev": true + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true } } }, @@ -1928,6 +8039,52 @@ "micromark": "^2.11.3" }, "dependencies": { + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, "micromark": { "version": "2.11.4", "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", @@ -1937,6 +8094,20 @@ "debug": "^4.0.0", "parse-entities": "^2.0.0" } + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } } } }, @@ -1947,41 +8118,74 @@ "dev": true, "requires": { "mdast-util-to-markdown": "^0.6.0" - } - }, - "mdast-util-gfm-table": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", - "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", - "dev": true, - "requires": { - "markdown-table": "^2.0.0", - "mdast-util-to-markdown": "~0.6.0" - } - }, - "mdast-util-gfm-task-list-item": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", - "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", - "dev": true, - "requires": { - "mdast-util-to-markdown": "~0.6.0" - } - }, - "mdast-util-to-markdown": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.0.tgz", - "integrity": "sha512-t8gNC/SrCoZWOlmfC95gctPzvJuU7PTosm6kEfUTOOprRedYE6VHHIiy50bcLRhKyFTeEBUjOQHhxByTFEs9pw==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" }, "dependencies": { + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true + }, + "mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + } + }, "mdast-util-to-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", @@ -2001,25 +8205,97 @@ "is-decimal": "^1.0.0", "is-hexadecimal": "^1.0.0" } + }, + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true } } }, - "mdast-util-to-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", - "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", - "dev": true - }, - "micromark": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.10.1.tgz", - "integrity": "sha512-fUuVF8sC1X7wsCS29SYQ2ZfIZYbTymp0EYr6sab3idFjigFFjGa5UwoniPlV9tAgntjuapW1t9U+S0yDYeGKHQ==", + "mdast-util-gfm-table": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", + "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", "dev": true, "requires": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" + "markdown-table": "^2.0.0", + "mdast-util-to-markdown": "~0.6.0" }, "dependencies": { + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true + }, + "mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + } + }, + "mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true + }, "parse-entities": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", @@ -2033,13 +8309,176 @@ "is-decimal": "^1.0.0", "is-hexadecimal": "^1.0.0" } + }, + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true } } }, + "mdast-util-gfm-task-list-item": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", + "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", + "dev": true, + "requires": { + "mdast-util-to-markdown": "~0.6.0" + }, + "dependencies": { + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, + "longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "dev": true + }, + "mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" + } + }, + "mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "dev": true + } + } + }, + "mdast-util-mdx-expression": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.1.1.tgz", + "integrity": "sha512-RDLRkBFmBKCJl6/fQdxxKL2BqNtoPFoNBmQAlj5ZNKOijIWRKjdhPkeufsUOaexLj+78mhJc+L7d1MYka8/LdQ==", + "dev": true, + "requires": { + "@types/estree-jsx": "^0.0.1" + } + }, + "mdast-util-to-markdown": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.2.3.tgz", + "integrity": "sha512-040jJYtjOUdbvYAXCfPrpLJRdvMOmR33KRqlhT4r+fEbVM+jao1RMbA8RmGeRmw8RAj3vQ+HvhIaJPijvnOwCg==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "longest-streak": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" + } + }, + "mdast-util-to-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", + "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==", + "dev": true + }, + "micromark": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.0.6.tgz", + "integrity": "sha512-yzyfAHhglgEDprJnsvoQVPSXy5OnQfgyatGTxh0XVpismB5+aECnsHY2I1oxsySf6t/2FeamjOLoxun47nVhvw==", + "dev": true, + "requires": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "parse-entities": "^3.0.0" + } + }, "micromark-core-commonmark": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.0.tgz", - "integrity": "sha512-y9g7zymcKRBHM/aNBekstvs/Grpf+y4OEBULUTYvGZcusnp+JeOxmilJY4GMpo2/xY7iHQL9fjz5pD9pSAud9A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.2.tgz", + "integrity": "sha512-nIxVDZnm1ra2BcnUSUWe9LC3UBTQ/sqUp4do80xXhtCWxBYj7u70Qw2CH54oZu7jblDCxDO3tmNBSprV5EWndg==", "dev": true, "requires": { "micromark-factory-destination": "^1.0.0", @@ -2055,70 +8494,9 @@ "micromark-util-resolve-all": "^1.0.0", "micromark-util-subtokenize": "^1.0.0", "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "parse-entities": "^3.0.0" - }, - "dependencies": { - "character-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.0.tgz", - "integrity": "sha512-oHqMj3eAuJ77/P5PaIRcqk+C3hdfNwyCD2DAUcD5gyXkegAuF2USC40CEqPscDk4I8FRGMTojGJQkXDsN5QlJA==", - "dev": true - }, - "character-entities-legacy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-2.0.0.tgz", - "integrity": "sha512-YwaEtEvWLpFa6Wh3uVLrvirA/ahr9fki/NUd/Bd4OR6EdJ8D22hovYQEOUCBfQfcqnC4IAMGMsHXY1eXgL4ZZA==", - "dev": true - }, - "character-reference-invalid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.0.tgz", - "integrity": "sha512-pE3Z15lLRxDzWJy7bBHBopRwfI20sbrMVLQTC7xsPglCHf4Wv1e167OgYAFP78co2XlhojDyAqA+IAJse27//g==", - "dev": true - }, - "is-alphabetical": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.0.tgz", - "integrity": "sha512-5OV8Toyq3oh4eq6sbWTYzlGdnMT/DPI5I0zxUBxjiigQsZycpkKF3kskkao3JyYGuYDHvhgJF+DrjMQp9SX86w==", - "dev": true - }, - "is-alphanumerical": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.0.tgz", - "integrity": "sha512-t+2GlJ+hO9yagJ+jU3+HSh80VKvz/3cG2cxbGGm4S0hjKuhWQXgPVUVOZz3tqZzMjhmphZ+1TIJTlRZRoe6GCQ==", - "dev": true, - "requires": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - } - }, - "is-decimal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.0.tgz", - "integrity": "sha512-QfrfjQV0LjoWQ1K1XSoEZkTAzSa14RKVMa5zg3SdAfzEmQzRM4+tbSFWb78creCeA9rNBzaZal92opi1TwPWZw==", - "dev": true - }, - "is-hexadecimal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.0.tgz", - "integrity": "sha512-vGOtYkiaxwIiR0+Ng/zNId+ZZehGfINwTzdrDqc6iubbnQWhnPuYymOzOKUDqa2cSl59yHnEh2h6MvRLQsyNug==", - "dev": true - }, - "parse-entities": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-3.0.0.tgz", - "integrity": "sha512-AJlcIFDNPEP33KyJLguv0xJc83BNvjxwpuUIcetyXUsLpVXAUCePJ5kIoYtEN2R1ac0cYaRu/vk9dVFkewHQhQ==", - "dev": true, - "requires": { - "character-entities": "^2.0.0", - "character-entities-legacy": "^2.0.0", - "character-reference-invalid": "^2.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" - } - } + "micromark-util-types": "^1.0.1", + "parse-entities": "^3.0.0", + "power-assert": "^1.0.0" } }, "micromark-extension-footnote": { @@ -2130,6 +8508,52 @@ "micromark": "~2.11.0" }, "dependencies": { + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, "micromark": { "version": "2.11.4", "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", @@ -2139,6 +8563,20 @@ "debug": "^4.0.0", "parse-entities": "^2.0.0" } + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } } } }, @@ -2167,6 +8605,52 @@ "micromark-extension-gfm-task-list-item": "~0.3.0" }, "dependencies": { + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, "micromark": { "version": "2.11.4", "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", @@ -2176,6 +8660,20 @@ "debug": "^4.0.0", "parse-entities": "^2.0.0" } + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } } } }, @@ -2188,6 +8686,52 @@ "micromark": "~2.11.3" }, "dependencies": { + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, "micromark": { "version": "2.11.4", "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", @@ -2197,6 +8741,20 @@ "debug": "^4.0.0", "parse-entities": "^2.0.0" } + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } } } }, @@ -2209,6 +8767,52 @@ "micromark": "~2.11.0" }, "dependencies": { + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, "micromark": { "version": "2.11.4", "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", @@ -2218,6 +8822,20 @@ "debug": "^4.0.0", "parse-entities": "^2.0.0" } + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } } } }, @@ -2230,6 +8848,52 @@ "micromark": "~2.11.0" }, "dependencies": { + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, "micromark": { "version": "2.11.4", "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", @@ -2239,6 +8903,20 @@ "debug": "^4.0.0", "parse-entities": "^2.0.0" } + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } } } }, @@ -2257,6 +8935,52 @@ "micromark": "~2.11.0" }, "dependencies": { + "character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "dev": true + }, + "character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "dev": true + }, + "character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "dev": true + }, + "is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "dev": true + }, + "is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "dev": true + }, "micromark": { "version": "2.11.4", "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", @@ -2266,6 +8990,20 @@ "debug": "^4.0.0", "parse-entities": "^2.0.0" } + }, + "parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dev": true, + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } } } }, @@ -2281,14 +9019,15 @@ } }, "micromark-factory-label": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.0.tgz", - "integrity": "sha512-XWEucVZb+qBCe2jmlOnWr6sWSY6NHx+wtpgYFsm4G+dufOf6tTQRRo0bdO7XSlGPu5fyjpJenth6Ksnc5Mwfww==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.1.tgz", + "integrity": "sha512-d/we+Gm9cqySOaPmtx109GEbG2dadb2myK9Tcm3aAx9Ug0IL4ucQtzKVoO+02HI10E76ncv9n/VEEF5ym0RzTQ==", "dev": true, "requires": { "micromark-util-character": "^1.0.0", "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "micromark-util-types": "^1.0.0", + "power-assert": "^1.0.0" } }, "micromark-factory-space": { @@ -2302,15 +9041,16 @@ } }, "micromark-factory-title": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.0.tgz", - "integrity": "sha512-flvC7Gx0dWVWorXuBl09Cr3wB5FTuYec8pMGVySIp2ZlqTcIjN/lFohZcP0EG//krTptm34kozHk7aK/CleCfA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.1.tgz", + "integrity": "sha512-nAdDygUZK7WtHFkNi01PzS33jeWPKZXA6LEABQiCVDXvNNUjdQ9o4stT8jBu3BNsE3ZulfG5IGdfWuOWS/CS+w==", "dev": true, "requires": { "micromark-factory-space": "^1.0.0", "micromark-util-character": "^1.0.0", "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "micromark-util-types": "^1.0.0", + "power-assert": "^1.0.0" } }, "micromark-factory-whitespace": { @@ -2374,6 +9114,18 @@ "micromark-util-symbol": "^1.0.0" } }, + "micromark-util-decode-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.1.tgz", + "integrity": "sha512-Wf3H6jLaO3iIlHEvblESXaKAr72nK7JtBbLLICPwuZc3eJkMcp4j8rJ5Xv1VbQWMCWWDvKUbVUbE2MfQNznwTA==", + "dev": true, + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "parse-entities": "^3.0.0" + } + }, "micromark-util-encode": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.0.tgz", @@ -2416,14 +9168,15 @@ } }, "micromark-util-subtokenize": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.0.tgz", - "integrity": "sha512-EsnG2qscmcN5XhkqQBZni/4oQbLFjz9yk3ZM/P8a3YUjwV6+6On2wehr1ALx0MxK3+XXXLTzuBKHDFeDFYRdgQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.1.tgz", + "integrity": "sha512-Zy7XuVepFWm8MqiqFywq4wFu4GXlksyC3e942GaQBXaaCWha3VbkZiTmOEBDCcvp1xKq/xZ2gGEIsCjU+SuEig==", "dev": true, "requires": { "micromark-util-chunked": "^1.0.0", "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "micromark-util-types": "^1.0.0", + "power-assert": "^1.0.0" } }, "micromark-util-symbol": { @@ -2433,9 +9186,9 @@ "dev": true }, "micromark-util-types": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.0.tgz", - "integrity": "sha512-psf1WAaP1B77WpW4mBGDkTr+3RsPuDAgsvlP47GJzbH1jmjH8xjOx7Z6kp84L8oqHmy5pYO3Ev46odosZV+3AA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.1.tgz", + "integrity": "sha512-UT0ylWEEy80RFYzK9pEaugTqaxoD/j0Y9WhHpSyitxd99zjoQz7JJ+iKuhPAgOW2MiPSUAx+c09dcqokeyaROA==", "dev": true }, "minimatch": { @@ -2562,17 +9315,17 @@ "dev": true }, "parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-3.0.0.tgz", + "integrity": "sha512-AJlcIFDNPEP33KyJLguv0xJc83BNvjxwpuUIcetyXUsLpVXAUCePJ5kIoYtEN2R1ac0cYaRu/vk9dVFkewHQhQ==", "dev": true, "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" + "character-entities": "^2.0.0", + "character-entities-legacy": "^2.0.0", + "character-reference-invalid": "^2.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" } }, "parse-json": { @@ -2584,12 +9337,6 @@ "error-ex": "^1.2.0" } }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -2658,18 +9405,132 @@ "integrity": "sha1-crcmqm+sHt7uQiVsfY3CVrM1Z38=", "dev": true }, + "power-assert": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/power-assert/-/power-assert-1.6.1.tgz", + "integrity": "sha512-VWkkZV6Y+W8qLX/PtJu2Ur2jDPIs0a5vbP0TpKeybNcIXmT4vcKoVkyTp5lnQvTpY/DxacAZ4RZisHRHLJcAZQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "empower": "^1.3.1", + "power-assert-formatter": "^1.4.1", + "universal-deep-strict-equal": "^1.2.1", + "xtend": "^4.0.0" + } + }, + "power-assert-context-formatter": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-context-formatter/-/power-assert-context-formatter-1.2.0.tgz", + "integrity": "sha512-HLNEW8Bin+BFCpk/zbyKwkEu9W8/zThIStxGo7weYcFkKgMuGCHUJhvJeBGXDZf0Qm2xis4pbnnciGZiX0EpSg==", + "dev": true, + "requires": { + "core-js": "^2.0.0", + "power-assert-context-traversal": "^1.2.0" + } + }, + "power-assert-context-reducer-ast": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-context-reducer-ast/-/power-assert-context-reducer-ast-1.2.0.tgz", + "integrity": "sha512-EgOxmZ/Lb7tw4EwSKX7ZnfC0P/qRZFEG28dx/690qvhmOJ6hgThYFm5TUWANDLK5NiNKlPBi5WekVGd2+5wPrw==", + "dev": true, + "requires": { + "acorn": "^5.0.0", + "acorn-es7-plugin": "^1.0.12", + "core-js": "^2.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.2.0" + } + }, + "power-assert-context-traversal": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-context-traversal/-/power-assert-context-traversal-1.2.0.tgz", + "integrity": "sha512-NFoHU6g2umNajiP2l4qb0BRWD773Aw9uWdWYH9EQsVwIZnog5bd2YYLFCVvaxWpwNzWeEfZIon2xtyc63026pQ==", + "dev": true, + "requires": { + "core-js": "^2.0.0", + "estraverse": "^4.1.0" + } + }, + "power-assert-formatter": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/power-assert-formatter/-/power-assert-formatter-1.4.1.tgz", + "integrity": "sha1-XcEl7VCj37HdomwZNH879Y7CiEo=", + "dev": true, + "requires": { + "core-js": "^2.0.0", + "power-assert-context-formatter": "^1.0.7", + "power-assert-context-reducer-ast": "^1.0.7", + "power-assert-renderer-assertion": "^1.0.7", + "power-assert-renderer-comparison": "^1.0.7", + "power-assert-renderer-diagram": "^1.0.7", + "power-assert-renderer-file": "^1.0.7" + } + }, + "power-assert-renderer-assertion": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-assertion/-/power-assert-renderer-assertion-1.2.0.tgz", + "integrity": "sha512-3F7Q1ZLmV2ZCQv7aV7NJLNK9G7QsostrhOU7U0RhEQS/0vhEqrRg2jEJl1jtUL4ZyL2dXUlaaqrmPv5r9kRvIg==", + "dev": true, + "requires": { + "power-assert-renderer-base": "^1.1.1", + "power-assert-util-string-width": "^1.2.0" + } + }, + "power-assert-renderer-base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/power-assert-renderer-base/-/power-assert-renderer-base-1.1.1.tgz", + "integrity": "sha1-lqZQxv0F7hvB9mtUrWFELIs/Y+s=", + "dev": true + }, + "power-assert-renderer-comparison": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-comparison/-/power-assert-renderer-comparison-1.2.0.tgz", + "integrity": "sha512-7c3RKPDBKK4E3JqdPtYRE9cM8AyX4LC4yfTvvTYyx8zSqmT5kJnXwzR0yWQLOavACllZfwrAGQzFiXPc5sWa+g==", + "dev": true, + "requires": { + "core-js": "^2.0.0", + "diff-match-patch": "^1.0.0", + "power-assert-renderer-base": "^1.1.1", + "stringifier": "^1.3.0", + "type-name": "^2.0.1" + } + }, + "power-assert-renderer-diagram": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-diagram/-/power-assert-renderer-diagram-1.2.0.tgz", + "integrity": "sha512-JZ6PC+DJPQqfU6dwSmpcoD7gNnb/5U77bU5KgNwPPa+i1Pxiz6UuDeM3EUBlhZ1HvH9tMjI60anqVyi5l2oNdg==", + "dev": true, + "requires": { + "core-js": "^2.0.0", + "power-assert-renderer-base": "^1.1.1", + "power-assert-util-string-width": "^1.2.0", + "stringifier": "^1.3.0" + } + }, + "power-assert-renderer-file": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-renderer-file/-/power-assert-renderer-file-1.2.0.tgz", + "integrity": "sha512-/oaVrRbeOtGoyyd7e4IdLP/jIIUFJdqJtsYzP9/88R39CMnfF/S/rUc8ZQalENfUfQ/wQHu+XZYRMaCEZmEesg==", + "dev": true, + "requires": { + "power-assert-renderer-base": "^1.1.1" + } + }, + "power-assert-util-string-width": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/power-assert-util-string-width/-/power-assert-util-string-width-1.2.0.tgz", + "integrity": "sha512-lX90G0igAW0iyORTILZ/QjZWsa1MZ6VVY3L0K86e2eKun3S4LKPH4xZIl8fdeMYLfOjkaszbNSzf1uugLeAm2A==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0" + } + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, - "property-information": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.0.1.tgz", - "integrity": "sha512-F4WUUAF7fMeF4/JUFHNBWDaKDXi2jbvqBW/y6o5wsf3j19wTZ7S60TmtB5HoBhtgw7NKQRMWuz5vk2PR0CygUg==", - "dev": true - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -2795,41 +9656,6 @@ "define-properties": "^1.1.3" } }, - "rehype": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/rehype/-/rehype-12.0.0.tgz", - "integrity": "sha512-gZcttmf9R5IYHb8AlI1rlmWqXS1yX0rSB/S5ZGJs8atfYZy2DobvH3Ic/gSzB+HL/+oOHPtBguw1TprfhxXBgQ==", - "dev": true, - "requires": { - "@types/hast": "^2.0.0", - "rehype-parse": "^8.0.0", - "rehype-stringify": "^9.0.0", - "unified": "^10.0.0" - } - }, - "rehype-parse": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-8.0.3.tgz", - "integrity": "sha512-RGw0CVt+0S6KdvpE8bbP2Db9WXclQcIX7A0ufM3QFqAhTo/ddJMQrrI2j3cijlRPZlGK8R3pRgC8U5HyV76IDw==", - "dev": true, - "requires": { - "@types/hast": "^2.0.0", - "hast-util-from-parse5": "^7.0.0", - "parse5": "^6.0.0", - "unified": "^10.0.0" - } - }, - "rehype-stringify": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-9.0.2.tgz", - "integrity": "sha512-BuVA6lAEYtOpXO2xuHLohAzz8UNoQAxAqYRqh4QEEtU39Co+P1JBZhw6wXA9hMWp+JLcmrxWH8+UKcNSr443Fw==", - "dev": true, - "requires": { - "@types/hast": "^2.0.0", - "hast-util-to-html": "^8.0.0", - "unified": "^10.0.0" - } - }, "remark": { "version": "14.0.1", "resolved": "https://registry.npmjs.org/remark/-/remark-14.0.1.tgz", @@ -2840,173 +9666,6 @@ "remark-parse": "^10.0.0", "remark-stringify": "^10.0.0", "unified": "^10.0.0" - }, - "dependencies": { - "character-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.0.tgz", - "integrity": "sha512-oHqMj3eAuJ77/P5PaIRcqk+C3hdfNwyCD2DAUcD5gyXkegAuF2USC40CEqPscDk4I8FRGMTojGJQkXDsN5QlJA==", - "dev": true - }, - "character-entities-legacy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-2.0.0.tgz", - "integrity": "sha512-YwaEtEvWLpFa6Wh3uVLrvirA/ahr9fki/NUd/Bd4OR6EdJ8D22hovYQEOUCBfQfcqnC4IAMGMsHXY1eXgL4ZZA==", - "dev": true - }, - "character-reference-invalid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.0.tgz", - "integrity": "sha512-pE3Z15lLRxDzWJy7bBHBopRwfI20sbrMVLQTC7xsPglCHf4Wv1e167OgYAFP78co2XlhojDyAqA+IAJse27//g==", - "dev": true - }, - "is-alphabetical": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.0.tgz", - "integrity": "sha512-5OV8Toyq3oh4eq6sbWTYzlGdnMT/DPI5I0zxUBxjiigQsZycpkKF3kskkao3JyYGuYDHvhgJF+DrjMQp9SX86w==", - "dev": true - }, - "is-alphanumerical": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.0.tgz", - "integrity": "sha512-t+2GlJ+hO9yagJ+jU3+HSh80VKvz/3cG2cxbGGm4S0hjKuhWQXgPVUVOZz3tqZzMjhmphZ+1TIJTlRZRoe6GCQ==", - "dev": true, - "requires": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - } - }, - "is-decimal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.0.tgz", - "integrity": "sha512-QfrfjQV0LjoWQ1K1XSoEZkTAzSa14RKVMa5zg3SdAfzEmQzRM4+tbSFWb78creCeA9rNBzaZal92opi1TwPWZw==", - "dev": true - }, - "is-hexadecimal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.0.tgz", - "integrity": "sha512-vGOtYkiaxwIiR0+Ng/zNId+ZZehGfINwTzdrDqc6iubbnQWhnPuYymOzOKUDqa2cSl59yHnEh2h6MvRLQsyNug==", - "dev": true - }, - "longest-streak": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.0.tgz", - "integrity": "sha512-XhUjWR5CFaQ03JOP+iSDS9koy8T5jfoImCZ4XprElw3BXsSk4MpVYOLw/6LTDKZhO13PlAXnB5gS4MHQTpkSOw==", - "dev": true - }, - "mdast-util-from-markdown": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.0.0.tgz", - "integrity": "sha512-uj2G60sb7z1PNOeElFwCC9b/Se/lFXuLhVKFOAY2EHz/VvgbupTQRNXPoZl7rGpXYL6BNZgcgaybrlSWbo7n/g==", - "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "mdast-util-to-string": "^3.0.0", - "micromark": "^3.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "parse-entities": "^3.0.0", - "unist-util-stringify-position": "^3.0.0" - } - }, - "mdast-util-to-markdown": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.1.1.tgz", - "integrity": "sha512-4puev/CxuxVdlsx5lVmuzgdqfjkkJJLS1Zm/MnejQ8I7BLeeBlbkwp6WOGJypEcN8g56LbVbhNmn84MvvcAvSQ==", - "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "parse-entities": "^3.0.0", - "zwitch": "^2.0.0" - } - }, - "mdast-util-to-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", - "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==", - "dev": true - }, - "micromark": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.0.3.tgz", - "integrity": "sha512-fWuHx+JKV4zA8WfCFor2DWP9XmsZkIiyWRGofr7P7IGfpRIlb7/C5wwusGsNyr1D8HI5arghZDG1Ikc0FBwS5Q==", - "dev": true, - "requires": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "micromark-core-commonmark": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "parse-entities": "^3.0.0" - } - }, - "parse-entities": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-3.0.0.tgz", - "integrity": "sha512-AJlcIFDNPEP33KyJLguv0xJc83BNvjxwpuUIcetyXUsLpVXAUCePJ5kIoYtEN2R1ac0cYaRu/vk9dVFkewHQhQ==", - "dev": true, - "requires": { - "character-entities": "^2.0.0", - "character-entities-legacy": "^2.0.0", - "character-reference-invalid": "^2.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" - } - }, - "remark-parse": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.0.tgz", - "integrity": "sha512-07ei47p2Xl7Bqbn9H2VYQYirnAFJPwdMuypdozWsSbnmrkgA2e2sZLZdnDNrrsxR4onmIzH/J6KXqKxCuqHtPQ==", - "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "unified": "^10.0.0" - } - }, - "remark-stringify": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-10.0.0.tgz", - "integrity": "sha512-3LAQqJ/qiUxkWc7fUcVuB7RtIT38rvmxfmJG8z1TiE/D8zi3JGQ2tTcTJu9Tptdpb7gFwU0whRi5q1FbFOb9yA==", - "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.0.0", - "unified": "^10.0.0" - } - }, - "unist-util-stringify-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", - "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "zwitch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", - "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==", - "dev": true - } } }, "remark-cli": { @@ -3063,9 +9722,9 @@ } }, "remark-lint-fenced-code-flag": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-3.0.1.tgz", - "integrity": "sha512-HsEhvalGxCauZO6OAnaVzIBycfaHLuyZxy1KlniWXQJKZ6EjRAsWwkZHYx9qfPl/ZW7zDG+xAoWTqdHjZW/BTg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-3.1.0.tgz", + "integrity": "sha512-s96DWERWUeDi3kcDbW6TQo4vRUsGJUNhT1XEsmUzYlwJJ+2uGit9O5dAxvEnwF3gZxp/09hPsQ+QSxilC1sxLg==", "dev": true, "requires": { "@types/mdast": "^3.0.0", @@ -3074,41 +9733,12 @@ "unist-util-generated": "^2.0.0", "unist-util-position": "^4.0.0", "unist-util-visit": "^4.0.0" - }, - "dependencies": { - "unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", - "dev": true - }, - "unist-util-visit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.0.0.tgz", - "integrity": "sha512-3HWTvrtU10/E7qgPznBfiOyG0TXj9W8c1GSfaI8L9GkaG1pLePiQPZ7E35a0R3ToQ/zcy4Im6aZ9WBgOTnv1MQ==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.0.0" - } - }, - "unist-util-visit-parents": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.0.0.tgz", - "integrity": "sha512-CVaLOYPM/EaFTYMytbaju3Tw4QI3DHnHFnL358FkEu0hZOzSm/hqBdVwOQDR60jF5ZzhB1tlZlRH0ll/yekZIQ==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - } } }, "remark-lint-no-shell-dollars": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-3.0.1.tgz", - "integrity": "sha512-QvnA8Ltj3FPaAqUu0DebKYv66LFndTk0fXVZ9rQWOjTEVIKImy9Dy59kVqwYMpCwZbJkpigu2bMl/7UG/BA0XA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-3.1.0.tgz", + "integrity": "sha512-f4+NPey3yzd9TpDka5Bs3W+MMJBPz6bQ7zK3M9Qc133lqZ81hKMGVRrOBafS1RNqD5htLZbbGyCoJa476QtW1w==", "dev": true, "requires": { "@types/mdast": "^3.0.0", @@ -3116,196 +9746,41 @@ "unified-lint-rule": "^2.0.0", "unist-util-generated": "^2.0.0", "unist-util-visit": "^4.0.0" - }, - "dependencies": { - "unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", - "dev": true - }, - "unist-util-visit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.0.0.tgz", - "integrity": "sha512-3HWTvrtU10/E7qgPznBfiOyG0TXj9W8c1GSfaI8L9GkaG1pLePiQPZ7E35a0R3ToQ/zcy4Im6aZ9WBgOTnv1MQ==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.0.0" - } - }, - "unist-util-visit-parents": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.0.0.tgz", - "integrity": "sha512-CVaLOYPM/EaFTYMytbaju3Tw4QI3DHnHFnL358FkEu0hZOzSm/hqBdVwOQDR60jF5ZzhB1tlZlRH0ll/yekZIQ==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - } } }, "remark-message-control": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-7.0.0.tgz", - "integrity": "sha512-KZySoC97TrMPYfIZ9vJ7wxvQwniy68K6WCY3vmSedDN5YuGfdVOpMj6sjaZQcqbWZV9n7BhrT70E3xaUTtk4hA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-7.1.0.tgz", + "integrity": "sha512-PNVCm0JV5DikNyrvPYUDN97rL7r+ddy/4GMJpbIiQMS6qJxHJpGdppWOp5YfKHlkrfzddUzTQB/MoS9YCHyNNg==", "dev": true, "requires": { "@types/mdast": "^3.0.0", "mdast-comment-marker": "^2.0.0", - "rehype": "^12.0.0", "unified": "^10.0.0", "unified-message-control": "^4.0.0", "vfile": "^5.0.0" - }, - "dependencies": { - "unist-util-stringify-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", - "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "vfile": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.1.0.tgz", - "integrity": "sha512-4o7/DJjEaFPYSh0ckv5kcYkJTHQgCKdL8ozMM1jLAxO9ox95IzveDPXCZp08HamdWq8JXTkClDvfAKaeLQeKtg==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } - }, - "vfile-message": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.2.tgz", - "integrity": "sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } - } } }, "remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.0.tgz", + "integrity": "sha512-07ei47p2Xl7Bqbn9H2VYQYirnAFJPwdMuypdozWsSbnmrkgA2e2sZLZdnDNrrsxR4onmIzH/J6KXqKxCuqHtPQ==", "dev": true, "requires": { - "mdast-util-from-markdown": "^0.8.0" + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" } }, "remark-stringify": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-10.0.0.tgz", - "integrity": "sha512-3LAQqJ/qiUxkWc7fUcVuB7RtIT38rvmxfmJG8z1TiE/D8zi3JGQ2tTcTJu9Tptdpb7gFwU0whRi5q1FbFOb9yA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-10.0.1.tgz", + "integrity": "sha512-380vOu9EHqRTDhI9RlPU2EKY1abUDEmxw9fW7pJ/8Jr1izk0UcdnZB30qiDDRYi6pGn5FnVf9Wd2iUeCWTqM7Q==", "dev": true, "requires": { "@types/mdast": "^3.0.0", "mdast-util-to-markdown": "^1.0.0", "unified": "^10.0.0" - }, - "dependencies": { - "character-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.0.tgz", - "integrity": "sha512-oHqMj3eAuJ77/P5PaIRcqk+C3hdfNwyCD2DAUcD5gyXkegAuF2USC40CEqPscDk4I8FRGMTojGJQkXDsN5QlJA==", - "dev": true - }, - "character-entities-legacy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-2.0.0.tgz", - "integrity": "sha512-YwaEtEvWLpFa6Wh3uVLrvirA/ahr9fki/NUd/Bd4OR6EdJ8D22hovYQEOUCBfQfcqnC4IAMGMsHXY1eXgL4ZZA==", - "dev": true - }, - "character-reference-invalid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.0.tgz", - "integrity": "sha512-pE3Z15lLRxDzWJy7bBHBopRwfI20sbrMVLQTC7xsPglCHf4Wv1e167OgYAFP78co2XlhojDyAqA+IAJse27//g==", - "dev": true - }, - "is-alphabetical": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.0.tgz", - "integrity": "sha512-5OV8Toyq3oh4eq6sbWTYzlGdnMT/DPI5I0zxUBxjiigQsZycpkKF3kskkao3JyYGuYDHvhgJF+DrjMQp9SX86w==", - "dev": true - }, - "is-alphanumerical": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.0.tgz", - "integrity": "sha512-t+2GlJ+hO9yagJ+jU3+HSh80VKvz/3cG2cxbGGm4S0hjKuhWQXgPVUVOZz3tqZzMjhmphZ+1TIJTlRZRoe6GCQ==", - "dev": true, - "requires": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - } - }, - "is-decimal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.0.tgz", - "integrity": "sha512-QfrfjQV0LjoWQ1K1XSoEZkTAzSa14RKVMa5zg3SdAfzEmQzRM4+tbSFWb78creCeA9rNBzaZal92opi1TwPWZw==", - "dev": true - }, - "is-hexadecimal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.0.tgz", - "integrity": "sha512-vGOtYkiaxwIiR0+Ng/zNId+ZZehGfINwTzdrDqc6iubbnQWhnPuYymOzOKUDqa2cSl59yHnEh2h6MvRLQsyNug==", - "dev": true - }, - "longest-streak": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.0.tgz", - "integrity": "sha512-XhUjWR5CFaQ03JOP+iSDS9koy8T5jfoImCZ4XprElw3BXsSk4MpVYOLw/6LTDKZhO13PlAXnB5gS4MHQTpkSOw==", - "dev": true - }, - "mdast-util-to-markdown": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.1.1.tgz", - "integrity": "sha512-4puev/CxuxVdlsx5lVmuzgdqfjkkJJLS1Zm/MnejQ8I7BLeeBlbkwp6WOGJypEcN8g56LbVbhNmn84MvvcAvSQ==", - "dev": true, - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "parse-entities": "^3.0.0", - "zwitch": "^2.0.0" - } - }, - "mdast-util-to-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", - "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==", - "dev": true - }, - "parse-entities": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-3.0.0.tgz", - "integrity": "sha512-AJlcIFDNPEP33KyJLguv0xJc83BNvjxwpuUIcetyXUsLpVXAUCePJ5kIoYtEN2R1ac0cYaRu/vk9dVFkewHQhQ==", - "dev": true, - "requires": { - "character-entities": "^2.0.0", - "character-entities-legacy": "^2.0.0", - "character-reference-invalid": "^2.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" - } - }, - "zwitch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", - "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==", - "dev": true - } } }, "repeat-string": { @@ -3314,12 +9789,6 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -3366,14 +9835,25 @@ "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + } } }, - "space-separated-tokens": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", - "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==", - "dev": true - }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -3401,9 +9881,9 @@ } }, "spdx-license-ids": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", - "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", + "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", "dev": true }, "sprintf-js": { @@ -3412,17 +9892,6 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -3432,31 +9901,54 @@ "safe-buffer": "~5.2.0" } }, - "stringify-entities": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.1.tgz", - "integrity": "sha512-gmMQxKXPWIO3NXNSPyWNhlYcBNGpPA/487D+9dLPnU4xBnIrnHdr8cv5rGJOS/1BRxEXRb7uKwg7BA36IWV7xg==", + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^2.0.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" }, "dependencies": { - "character-entities-legacy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-2.0.0.tgz", - "integrity": "sha512-YwaEtEvWLpFa6Wh3uVLrvirA/ahr9fki/NUd/Bd4OR6EdJ8D22hovYQEOUCBfQfcqnC4IAMGMsHXY1eXgL4ZZA==", - "dev": true + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } } } }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "stringifier": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/stringifier/-/stringifier-1.4.0.tgz", + "integrity": "sha512-cNsMOqqrcbLcHTXEVmkw9y0fwDwkdgtZwlfyolzpQDoAE1xdNGhQhxBUfiDvvZIKl1hnUEgMv66nHwtMz3OjPw==", "dev": true, "requires": { - "ansi-regex": "^5.0.0" + "core-js": "^2.0.0", + "traverse": "^0.6.6", + "type-name": "^2.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + } } }, "strip-bom": { @@ -3484,26 +9976,42 @@ } }, "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true }, "table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz", + "integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==", "dev": true, "requires": { "ajv": "^8.0.1", "lodash.clonedeep": "^4.5.0", "lodash.truncate": "^4.4.2", "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } } }, "text-table": { @@ -3546,46 +10054,6 @@ "structured-source": "^3.0.2", "try-resolve": "^1.0.1", "unique-concat": "^0.2.2" - }, - "dependencies": { - "@textlint/ast-node-types": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.0.0.tgz", - "integrity": "sha512-qUjmlpz1vR3AStBA9RPDCVT0/pGtePvBJ5Vb/0PzTrnr04iFktG6P6B1VOmgTh8J9Kl/FonQFo3A9M1Q3UH+JA==", - "dev": true - }, - "@textlint/types": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.0.2.tgz", - "integrity": "sha512-w5aWSCd1sot1waiYw8KnmJNY1q+k9LDoaA6xjGbBuVBGJl0TLXIZoOP8HYFUcKFfJRpqGGob1geTHiyFdnyS0w==", - "dev": true, - "requires": { - "@textlint/ast-node-types": "^12.0.0" - } - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } } }, "textlint-rule-common-misspellings": { @@ -3605,6 +10073,32 @@ "dev": true, "requires": { "unist-util-visit": "^1.1.0" + }, + "dependencies": { + "unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", + "dev": true + }, + "unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "dev": true, + "requires": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "dev": true, + "requires": { + "unist-util-is": "^3.0.0" + } + } } }, "textlint-rule-terminology": { @@ -3618,17 +10112,56 @@ "textlint-rule-helper": "^2.1.1" }, "dependencies": { - "textlint-rule-helper": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/textlint-rule-helper/-/textlint-rule-helper-2.1.1.tgz", - "integrity": "sha512-6fxgHzoJVkjl3LaC1b2Egi+5wbhG4i0pU0knJmQujVhxIJ3D3AcQQZPs457xKAi5xKz1WayYeTeJ5jrD/hnO7g==", + "@textlint/ast-node-types": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.3.tgz", + "integrity": "sha512-qi2jjgO6Tn3KNPGnm6B7p6QTEPvY95NFsIAaJuwbulur8iJUEenp1OnoUfiDaC/g2WPPEFkcfXpmnu8XEMFo2A==", + "dev": true + }, + "@textlint/types": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.5.tgz", + "integrity": "sha512-80P6fcqgsG9bP6JgR6W/E/oIx+71pplaicYCvvB4vMIeGk0OnWls4Q21kCpDYmq/C/ABtZ/Gy/Ov/8ExQPeQ7A==", "dev": true, "requires": { - "@textlint/ast-node-types": "^4.2.1", - "@textlint/types": "^1.1.2", + "@textlint/ast-node-types": "^4.4.3" + } + }, + "textlint-rule-helper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/textlint-rule-helper/-/textlint-rule-helper-2.2.0.tgz", + "integrity": "sha512-9S5CsgQuQwPjM2wvr4JGdpkLf+pR9gOjedSQFa/Dkrbh+D9MXt1LIR4Jvx1RujKtt2nq42prmEX2q3xOxyUcIQ==", + "dev": true, + "requires": { + "@textlint/ast-node-types": "^4.4.3", + "@textlint/types": "^1.5.5", "structured-source": "^3.0.2", "unist-util-visit": "^1.1.0" } + }, + "unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", + "dev": true + }, + "unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "dev": true, + "requires": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "dev": true, + "requires": { + "unist-util-is": "^3.0.0" + } } } }, @@ -3642,45 +10175,20 @@ } }, "to-vfile": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-7.2.1.tgz", - "integrity": "sha512-biljADNq2n+AZn/zX+/87zStnIqctKr/q5OaOD8+qSKINokUGPbWBShvxa1iLUgHz6dGGjVnQPNoFRtVBzMkVg==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-7.2.2.tgz", + "integrity": "sha512-7WL+coet3qyaYb5vrVrfLtOUHgNv9E1D5SIsyVKmHKcgZefy77WMQRk7FByqGKNInoHOlY6xkTGymo29AwjUKg==", "dev": true, "requires": { "is-buffer": "^2.0.0", - "vfile": "^5.0.0" + "vfile": "^5.1.0" }, "dependencies": { - "unist-util-stringify-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", - "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "vfile": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.0.2.tgz", - "integrity": "sha512-5cV+K7tX83MT3bievROc+7AvHv0GXDB0zqbrTjbOe+HRbkzvY4EP+wS3IR77kUBCoWFMdG9py18t0sesPtQ1Rw==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } - }, - "vfile-message": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.1.tgz", - "integrity": "sha512-gYmSHcZZUEtYpTmaWaFJwsuUD70/rTY4v09COp8TGtOkix6gGxb/a8iTQByIY9ciTk9GwAwIXd/J9OPfM4Bvaw==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true } } }, @@ -3691,9 +10199,9 @@ "dev": true }, "trough": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.4.tgz", - "integrity": "sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.0.2.tgz", + "integrity": "sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w==", "dev": true }, "try-resolve": { @@ -3711,6 +10219,12 @@ "prelude-ls": "^1.2.1" } }, + "type-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/type-name/-/type-name-2.0.2.tgz", + "integrity": "sha1-7+fUEj2KxSr/9/QMfk3sUmYAj7Q=", + "dev": true + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -3732,89 +10246,65 @@ "vfile": "^5.0.0" }, "dependencies": { - "bail": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.1.tgz", - "integrity": "sha512-d5FoTAr2S5DSUPKl85WNm2yUwsINN8eidIdIwsOge2t33DaOfOdSmmsI11jMN3GmALCXaw+Y6HMVHDzePshFAA==", + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true - }, - "is-plain-obj": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz", - "integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==", - "dev": true - }, - "trough": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.0.2.tgz", - "integrity": "sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w==", - "dev": true - }, - "unist-util-stringify-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", - "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "vfile": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.0.2.tgz", - "integrity": "sha512-5cV+K7tX83MT3bievROc+7AvHv0GXDB0zqbrTjbOe+HRbkzvY4EP+wS3IR77kUBCoWFMdG9py18t0sesPtQ1Rw==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } - }, - "vfile-message": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.1.tgz", - "integrity": "sha512-gYmSHcZZUEtYpTmaWaFJwsuUD70/rTY4v09COp8TGtOkix6gGxb/a8iTQByIY9ciTk9GwAwIXd/J9OPfM4Bvaw==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } } } }, "unified-args": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/unified-args/-/unified-args-9.0.0.tgz", - "integrity": "sha512-DP+p24cr7zba/wor7FxC8EM9p4GA4qsrNabV2eQYHk8Hp5NqEzGPceZcljrDgerZWdAGSZClt/488rlmKETTaA==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/unified-args/-/unified-args-9.0.2.tgz", + "integrity": "sha512-qSqryjoqfJSII4E4Z2Jx7MhXX2MuUIn6DsrlmL8UnWFdGtrWvEtvm7Rx5fKT5TPUz7q/Fb4oxwIHLCttvAuRLQ==", "dev": true, "requires": { - "@types/text-table": "^0.2.2", + "@types/text-table": "^0.2.0", "camelcase": "^6.0.0", "chalk": "^4.0.0", "chokidar": "^3.0.0", "fault": "^2.0.0", "json5": "^2.0.0", - "minimist": "^1.2.0", + "minimist": "^1.0.0", "text-table": "^0.2.0", "unified-engine": "^9.0.0" }, "dependencies": { - "fault": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.0.tgz", - "integrity": "sha512-JsDj9LFcoC+4ChII1QpXPA7YIaY8zmqPYw7h9j5n7St7a0BBKfNnwEBAUQRBx70o2q4rs+BeSNHk8Exm6xE7fQ==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "format": "^0.2.0" + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } } } }, "unified-engine": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-9.0.2.tgz", - "integrity": "sha512-YWOI74nCpFO+6Ul8NSjGHvmjTsiGeON9LjqjlN5g394Jna1OHVwKjzNHVbrwHM4BDd8v0pL8BIjvvK9GYhvNtA==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-9.0.4.tgz", + "integrity": "sha512-NFI+jC3DWZ23eBsWkOW2havz47DPG/DSyJEvBH+qA5cQHF6zlgiJYev7ksb/naOypZZ+cfhaCxCRo2BqrysYEw==", "dev": true, "requires": { "@types/concat-stream": "^1.0.0", @@ -3848,19 +10338,10 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "fault": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.0.tgz", - "integrity": "sha512-JsDj9LFcoC+4ChII1QpXPA7YIaY8zmqPYw7h9j5n7St7a0BBKfNnwEBAUQRBx70o2q4rs+BeSNHk8Exm6xE7fQ==", - "dev": true, - "requires": { - "format": "^0.2.0" - } - }, - "is-plain-obj": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz", - "integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==", + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true }, "js-yaml": { @@ -3883,83 +10364,19 @@ "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } - }, - "trough": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.0.2.tgz", - "integrity": "sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w==", - "dev": true - }, - "unist-util-stringify-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", - "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "vfile-message": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.1.tgz", - "integrity": "sha512-gYmSHcZZUEtYpTmaWaFJwsuUD70/rTY4v09COp8TGtOkix6gGxb/a8iTQByIY9ciTk9GwAwIXd/J9OPfM4Bvaw==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } } } }, "unified-lint-rule": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-2.0.1.tgz", - "integrity": "sha512-2RzZuuuWW+ifftM0zd/ZEng0Hb5lah+Zi+ZL/ybj8BrLO/TH2aQAMYvG+iC95aCg2FkWu/pcvVvHqsh2UMmzPg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-2.1.0.tgz", + "integrity": "sha512-pB2Uht3w+A9ceWXMYI0YWwxCTqC5on6jrApWDWSsYDBjaljSv8s64qdHHMCXFIUAGdd6V/XWrVMxiboHOAXo3Q==", "dev": true, "requires": { "@types/unist": "^2.0.0", "trough": "^2.0.0", "unified": "^10.0.0", "vfile": "^5.0.0" - }, - "dependencies": { - "trough": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.0.2.tgz", - "integrity": "sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w==", - "dev": true - }, - "unist-util-stringify-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", - "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "vfile": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.0.2.tgz", - "integrity": "sha512-5cV+K7tX83MT3bievROc+7AvHv0GXDB0zqbrTjbOe+HRbkzvY4EP+wS3IR77kUBCoWFMdG9py18t0sesPtQ1Rw==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } - }, - "vfile-message": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.2.tgz", - "integrity": "sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } - } } }, "unified-message-control": { @@ -3982,15 +10399,6 @@ "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", "dev": true }, - "unist-util-stringify-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", - "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, "unist-util-visit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", @@ -4011,28 +10419,6 @@ "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0" } - }, - "vfile": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.1.0.tgz", - "integrity": "sha512-4o7/DJjEaFPYSh0ckv5kcYkJTHQgCKdL8ozMM1jLAxO9ox95IzveDPXCZp08HamdWq8JXTkClDvfAKaeLQeKtg==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } - }, - "vfile-message": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.2.tgz", - "integrity": "sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } } } }, @@ -4058,9 +10444,9 @@ } }, "unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", "dev": true }, "unist-util-position": { @@ -4070,30 +10456,62 @@ "dev": true }, "unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", + "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", "dev": true, "requires": { - "@types/unist": "^2.0.2" + "@types/unist": "^2.0.0" } }, "unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.0.tgz", + "integrity": "sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==", "dev": true, "requires": { - "unist-util-visit-parents": "^2.0.0" + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + }, + "dependencies": { + "unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", + "dev": true + }, + "unist-util-visit-parents": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz", + "integrity": "sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + } + } } }, "unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", "dev": true, "requires": { - "unist-util-is": "^3.0.0" + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } + }, + "universal-deep-strict-equal": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/universal-deep-strict-equal/-/universal-deep-strict-equal-1.2.2.tgz", + "integrity": "sha1-DaSsL3PP95JMgfpN4BjKViyisKc=", + "dev": true, + "requires": { + "array-filter": "^1.0.0", + "indexof": "0.0.1", + "object-keys": "^1.0.0" } }, "uri-js": { @@ -4122,16 +10540,23 @@ } }, "vfile": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.0.tgz", - "integrity": "sha512-a/alcwCvtuc8OX92rqqo7PflxiCgXRFjdyoGVuYV+qbgCb0GgZJRvIgCD4+U/Kl1yhaRsaTwksF88xbPyGsgpw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.1.0.tgz", + "integrity": "sha512-4o7/DJjEaFPYSh0ckv5kcYkJTHQgCKdL8ozMM1jLAxO9ox95IzveDPXCZp08HamdWq8JXTkClDvfAKaeLQeKtg==", "dev": true, "requires": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", - "replace-ext": "1.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + } } }, "vfile-location": { @@ -4142,60 +10567,25 @@ "requires": { "@types/unist": "^2.0.0", "vfile": "^5.0.0" - }, - "dependencies": { - "unist-util-stringify-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", - "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "vfile": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.1.0.tgz", - "integrity": "sha512-4o7/DJjEaFPYSh0ckv5kcYkJTHQgCKdL8ozMM1jLAxO9ox95IzveDPXCZp08HamdWq8JXTkClDvfAKaeLQeKtg==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - } - }, - "vfile-message": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.2.tgz", - "integrity": "sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } - } } }, "vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.2.tgz", + "integrity": "sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww==", "dev": true, "requires": { "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" + "unist-util-stringify-position": "^3.0.0" } }, "vfile-reporter": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-7.0.1.tgz", - "integrity": "sha512-pof+cQSJCUNmHG6zoBOJfErb6syIWHWM14CwKjsugCixxl4CZdrgzgxwLBW8lIB6czkzX0Agnnhj33YpKyLvmA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-7.0.2.tgz", + "integrity": "sha512-1bYxpyhl8vhAICiKR59vYyZHIOWsF7P1nV6xjaz3ZWAyOQDQhR4DjlOZo14+PiV9oLEWIrolvGHs0/2Bnaw5Vw==", "dev": true, "requires": { - "@types/repeat-string": "^1.0.0", "@types/supports-color": "^8.0.0", - "repeat-string": "^1.0.0", "string-width": "^5.0.0", "supports-color": "^9.0.0", "unist-util-stringify-position": "^3.0.0", @@ -4204,9 +10594,9 @@ }, "dependencies": { "ansi-regex": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.0.tgz", - "integrity": "sha512-tAaOSrWCHF+1Ear1Z4wnJCXA9GGox4K6Ic85a5qalES2aeEwQGr7UC93mwef49536PkCYjzkp0zIxfFvexJ6zQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true }, "emoji-regex": { @@ -4228,23 +10618,23 @@ "dev": true }, "string-width": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.0.0.tgz", - "integrity": "sha512-zwXcRmLUdiWhMPrHz6EXITuyTgcEnUqDzspTkCLhQovxywWz6NP9VHgqfVg20V/1mUg0B95AKbXxNT+ALRmqCw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.0.1.tgz", + "integrity": "sha512-5ohWO/M4//8lErlUUtrFy3b11GtNOuMOU0ysKCDXFcfXuuvUXu95akgj/i8ofmaGdN0hCqyl6uu9i8dS/mQp5g==", "dev": true, "requires": { "emoji-regex": "^9.2.2", "is-fullwidth-code-point": "^4.0.0", - "strip-ansi": "^7.0.0" + "strip-ansi": "^7.0.1" } }, "strip-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.0.tgz", - "integrity": "sha512-UhDTSnGF1dc0DRbUqr1aXwNoY3RgVkSWG8BrpnuFIxhP57IqbS7IRta2Gfiavds4yCxc5+fEAVVOgBZWnYkvzg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", "dev": true, "requires": { - "ansi-regex": "^6.0.0" + "ansi-regex": "^6.0.1" } }, "supports-color": { @@ -4255,15 +10645,6 @@ "requires": { "has-flag": "^5.0.0" } - }, - "unist-util-stringify-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", - "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0" - } } } }, @@ -4274,27 +10655,6 @@ "dev": true, "requires": { "vfile-message": "^3.0.0" - }, - "dependencies": { - "unist-util-stringify-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", - "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "vfile-message": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.1.tgz", - "integrity": "sha512-gYmSHcZZUEtYpTmaWaFJwsuUD70/rTY4v09COp8TGtOkix6gGxb/a8iTQByIY9ciTk9GwAwIXd/J9OPfM4Bvaw==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } - } } }, "vfile-statistics": { @@ -4304,35 +10664,8 @@ "dev": true, "requires": { "vfile-message": "^3.0.0" - }, - "dependencies": { - "unist-util-stringify-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", - "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0" - } - }, - "vfile-message": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.1.tgz", - "integrity": "sha512-gYmSHcZZUEtYpTmaWaFJwsuUD70/rTY4v09COp8TGtOkix6gGxb/a8iTQByIY9ciTk9GwAwIXd/J9OPfM4Bvaw==", - "dev": true, - "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - } - } } }, - "web-namespaces": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.0.tgz", - "integrity": "sha512-dE7ELZRVWh0ceQsRgkjLgsAvwTuv3kcjSY/hLjqL0llleUlQBDjE9JkB9FCBY5F2mnFEwiyJoowl8+NVGHe8dw==", - "dev": true - }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -4360,6 +10693,12 @@ "integrity": "sha1-OQTBQ/qOs6ADDsZG0pAqLxtwbEQ=", "dev": true }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -4367,9 +10706,9 @@ "dev": true }, "zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", + "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==", "dev": true } } diff --git a/package.json b/package.json index cb63378ee8c..8f6bc31774a 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,9 @@ "remark-cli": "^10.0.0", "remark-frontmatter": "^4.0.0", "remark-lint": "^9.1.0", - "remark-lint-fenced-code-flag": "^3.0.1", - "remark-lint-no-shell-dollars": "^3.0.1", - "remark-stringify": "^10.0.0", + "remark-lint-fenced-code-flag": "^3.1.0", + "remark-lint-no-shell-dollars": "^3.1.0", + "remark-stringify": "^10.0.1", "textlint": "^12.0.2", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-terminology": "^2.1.5" diff --git a/sass/custom/_paulus.scss b/sass/custom/_paulus.scss index ad983a3c901..9ec2d1b859f 100644 --- a/sass/custom/_paulus.scss +++ b/sass/custom/_paulus.scss @@ -291,7 +291,7 @@ dt:hover a.title-link { position: absolute; top: 5px; left: -25px; - padding-right: 5px; + padding-right: 10px; padding-left: 5px; font-family: "FontAwesome"; font-size: 15px; diff --git a/source/_docs/automation/editor.markdown b/source/_docs/automation/editor.markdown index 0821703ee2a..6f5cb4d303e 100644 --- a/source/_docs/automation/editor.markdown +++ b/source/_docs/automation/editor.markdown @@ -3,33 +3,39 @@ title: "Automation Editor" description: "Instructions on how to use the automation editor." --- -From the UI choose **{% my config %}** which is located in the sidebar, then click on **{% my automations %}** to go to the automation editor. Press the **+** sign in the lower right corner to get started. This page uses the [Random sensor](/integrations/random#sensor) as an example. Any other sensor with a numeric value, can be used as well. +The automation editor is an easy way of creating and editing automations from the UI. This page uses the [Random sensor](/integrations/random#sensor) as an example, though any other sensor with a numeric value, can be used as well. -Choose a meaningful name for your automation rules. +From the UI choose **{% my config %}** which is located in the sidebar, then click on **{% my automations %}** to go to the automation editor. Press the **+** sign in the lower right corner to get started. You will be presented with options to create the automation from a description or from a [blueprint](/automation/using_blueprints/). + +

+ +

+ +Select "Start with an empty automation" and choose a meaningful name for your new automation.

-If the value of the sensor is greater than 10, then the automation rule should apply. +If the value of the sensor is greater than 10, then the automation should trigger.

-Firing a [persistent notification](/integrations/persistent_notification/) is the result. +The action for this automation creates a [persistent notification](/integrations/persistent_notification/).

-As "Service Data" we want a simple text that is shown as part of the notification. +As the message we want a simple text that is shown as part of the notification. ```yaml message: Sensor value greater than 10 ``` -Automations created or edited via the user interface are activated immediately after saving the automation. +Automations created or edited via the user interface are activated immediately after saving the automation. Read the documentation for [Automating Home Assistant](/getting-started/automation/) to learn more about automations. ## Troubleshooting missing automations diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index a9b6ec7d331..ebee59a7a14 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -7,6 +7,8 @@ Triggers are what starts the processing of an automation rule. When _any_ of the An automation can be triggered by an event, with a certain entity state, at a given time, and more. These can be specified directly or more flexible via templates. It is also possible to specify multiple triggers for one automation. +- [Trigger ID](#trigger-id) +- [Trigger variables](#trigger-variables) - [Event trigger](#event-trigger) - [Home Assistant trigger](#home-assistant-trigger) - [MQTT trigger](#mqtt-trigger) @@ -22,9 +24,9 @@ An automation can be triggered by an event, with a certain entity state, at a gi - [Geolocation trigger](#geolocation-trigger) - [Device triggers](#device-triggers) -## Trigger id +## Trigger ID -All triggers can be assigned an optional `id`. If the id is omitted, it will instead be set to the index of the trigger. The `id` can be referenced from trigger conditions. The `id` should be unique for each trigger. +All triggers can be assigned an optional `id`. If the ID is omitted, it will instead be set to the index of the trigger. The `id` can be referenced from trigger conditions and actions. The `id` does not have to be unique for each trigger, and it can be used to group similar triggers for use later in the automation (i.e., several triggers of different types that should all turn some entity on). ```yaml automation: @@ -42,7 +44,6 @@ automation: to: "home" ``` - ## Trigger variables Similar to [script level variables](/integrations/script/#variables), `trigger_variables` will be available in trigger templates with the difference that only [limited templates](/docs/configuration/templating/#limited-templates) can be used to pass a value to the trigger variable. @@ -677,7 +678,7 @@ automation 3:
-Do not prefix numbers with a zero - using `'00'` instead of `'0'` for example will result in errors. +Do not prefix numbers with a zero - using `'01'` instead of `'1'` for example will result in errors.
@@ -725,7 +726,7 @@ automation: ## Geolocation trigger Geolocation trigger fires when an entity is appearing in or disappearing from a zone. Entities that are created by a [Geolocation](/integrations/geo_location/) platform support reporting GPS coordinates. -Because entities are generated and removed by these platforms automatically, the entity id normally cannot be predicted. Instead, this trigger requires the definition of a `source`, which is directly linked to one of the Geolocation platforms. +Because entities are generated and removed by these platforms automatically, the entity ID normally cannot be predicted. Instead, this trigger requires the definition of a `source`, which is directly linked to one of the Geolocation platforms.
@@ -769,7 +770,7 @@ automation: ## Multiple Entity IDs for the same Trigger -It is possible to specify multiple entities for the same trigger. To do so add multiple entities using a nested list. The trigger will fire and start, [processing](#what-are-triggers) your automation each time the trigger is true for each entity listed. +It is possible to specify multiple entities for the same trigger. To do so add multiple entities using a nested list. The trigger will fire and start, [processing](#what-are-triggers) your automation each time the trigger is true for any entity listed. ```yaml automation: diff --git a/source/_docs/backend/database.markdown b/source/_docs/backend/database.markdown index a0ad7b94c40..5b261ac78c9 100644 --- a/source/_docs/backend/database.markdown +++ b/source/_docs/backend/database.markdown @@ -5,7 +5,7 @@ description: "Details about the database used by Home Assistant." Home Assistant uses database to store events and parametersis for history and tracking. The default database used is [SQLite](https://www.sqlite.org/) and the database file is stored in your [configuration directory](/getting-started/configuration/) (e.g., `/home-assistant_v2.db`); however, other databases can be used. If you prefer to run a database server (e.g., PostgreSQL), use the [`recorder` component](/integrations/recorder/). -To work with SQLite database manually from the command-line, you will need an [installation](http://www.sqlitetutorial.net/download-install-sqlite/) of `sqlite3`. Alternatively [DB Browser for SQLite](http://sqlitebrowser.org/) provides a viewer for exploring the database data and an editor for executing SQL commands. +To work with SQLite database manually from the command-line, you will need an [installation](https://www.sqlitetutorial.net/download-install-sqlite/) of `sqlite3`. Alternatively [DB Browser for SQLite](https://sqlitebrowser.org/) provides a viewer for exploring the database data and an editor for executing SQL commands. First load your database with `sqlite3`: ```bash diff --git a/source/_docs/configuration.markdown b/source/_docs/configuration.markdown index d8682d8d9dd..61e1bcb2b5d 100644 --- a/source/_docs/configuration.markdown +++ b/source/_docs/configuration.markdown @@ -15,7 +15,7 @@ If you prefer to use a file editor on your computer, use the {% my supervisor_ad _If you use Home Assistant Container, you can find `configuration.yaml` in the config folder that you mounted in your container._ -_If you use Home Assistant Core, you can find `configuration.yaml` in the config folder passed to the `hass` command (default is `~/.homeasssistant`)._ +_If you use Home Assistant Core, you can find `configuration.yaml` in the config folder passed to the `hass` command (default is `~/.homeassistant`)._ ## Reloading changes diff --git a/source/_docs/configuration/basic.markdown b/source/_docs/configuration/basic.markdown index 9487c1fba62..641519be50c 100644 --- a/source/_docs/configuration/basic.markdown +++ b/source/_docs/configuration/basic.markdown @@ -57,7 +57,7 @@ temperature_unit: required: false type: string time_zone: - description: "Pick your time zone from the column **TZ** of [Wikipedia's list of tz database time zones](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones)" + description: "Pick your time zone from the column **TZ** of [Wikipedia's list of tz database time zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)" required: false type: string currency: diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown index 29d66e54b92..384d1172667 100644 --- a/source/_docs/configuration/customizing-devices.markdown +++ b/source/_docs/configuration/customizing-devices.markdown @@ -39,7 +39,7 @@ entity_picture: required: false type: string icon: - description: "Any icon from [MaterialDesignIcons.com](http://materialdesignicons.com). Prefix name with `mdi:`, ie `mdi:home`. Note: Newer icons may not yet be available in the current Home Assistant release. You can check when an icon was added to MaterialDesignIcons.com at [MDI History](https://materialdesignicons.com/history)." + description: "Any icon from [MaterialDesignIcons.com](https://materialdesignicons.com). Prefix name with `mdi:`, ie `mdi:home`. Note: Newer icons may not yet be available in the current Home Assistant release. You can check when an icon was added to MaterialDesignIcons.com at [MDI History](https://materialdesignicons.com/history)." required: false type: string assumed_state: diff --git a/source/_docs/configuration/splitting_configuration.markdown b/source/_docs/configuration/splitting_configuration.markdown index 194808ceb7d..0e81810c7d2 100644 --- a/source/_docs/configuration/splitting_configuration.markdown +++ b/source/_docs/configuration/splitting_configuration.markdown @@ -22,7 +22,7 @@ homeassistant: longitude: -121 # 'metric' for Metric, 'imperial' for Imperial unit_system: imperial - # Pick yours from here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones + # Pick yours from here: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones time_zone: "America/Los_Angeles" customize: !include customize.yaml ``` diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index 7a1c1f070b2..34b7ce86ed7 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -288,7 +288,7 @@ The same thing can also be expressed as a filter: {% raw %} ```yaml - # 77 minutes before curret time. + # 77 minutes before current time. {{ now() - timedelta( hours = 1, minutes = 17 ) }} ``` @@ -415,7 +415,7 @@ These can also be combined in any combination: #### Closest examples -The closest function and filter will find the closest entity to the Home Assisant location: +The closest function and filter will find the closest entity to the Home Assistant location: {% raw %} diff --git a/source/_docs/configuration/troubleshooting.markdown b/source/_docs/configuration/troubleshooting.markdown index b6880bde4a3..d1df80a77b4 100644 --- a/source/_docs/configuration/troubleshooting.markdown +++ b/source/_docs/configuration/troubleshooting.markdown @@ -26,7 +26,7 @@ One of the most common problems with Home Assistant is an invalid `configuration - [Supervised](/common-tasks/supervised/#configuration-check) - The configuration files, including `configuration.yaml` must be UTF-8 encoded. If you see error like `'utf-8' codec can't decode byte`, edit the offending configuration and re-save it as UTF-8. -- You can verify your configuration's YAML structure using [this online YAML parser](http://yaml-online-parser.appspot.com/) or [YAML Lint](http://www.yamllint.com/). +- You can verify your configuration's YAML structure using [this online YAML parser](https://yaml-online-parser.appspot.com/) or [YAML Validator](https://codebeautify.org/yaml-validator/). - To learn more about the quirks of YAML, read [YAML IDIOSYNCRASIES](https://docs.saltstack.com/en/latest/topics/troubleshooting/yaml_idiosyncrasies.html) by SaltStack (the examples there are specific to SaltStack, but do explain YAML issues well). `configuration.yaml` does not allow multiple sections to have the same name. If you want to load multiple platforms for one component, you can append a [number or string](/getting-started/devices/#style-2-list-each-device-separately) to the name or nest them using [this style](/getting-started/devices/#style-1-collect-every-entity-under-the-parent): @@ -57,7 +57,7 @@ It can happen that some integrations either do not work right away or stop worki #### Multiple files -If you are using multiple files for your setup, make sure that the pointers are correct and the format of the files is valid. +If you are using multiple files for your setup, make sure that the pointers are correct and the format of the files is valid. It's important to understand the different types of `!include` and how the contents of each file should be structured - more information on the various methods of splitting your configuration into multiple files can be found [here](/docs/configuration/splitting_configuration). ```yaml light: !include devices/lights.yaml diff --git a/source/_docs/configuration/yaml.markdown b/source/_docs/configuration/yaml.markdown index e0e4ff9d4de..e914c141ffe 100644 --- a/source/_docs/configuration/yaml.markdown +++ b/source/_docs/configuration/yaml.markdown @@ -25,7 +25,7 @@ Note that indentation is an important part of specifying relationships using YAM Getting the right indentation can be tricky if you're not using an editor with a fixed width font. Tabs are not allowed to be used for indentation. Convention is to use 2 spaces for each level of indentation. -You can use the online service [YAMLLint](http://www.yamllint.com/) to check if your YAML syntax is correct before loading it into Home Assistant which will save you some time. If you do so, be aware that this is a third-party service and is not maintained by the Home Assistant community. +You can use the online service [YAML Validator](https://codebeautify.org/yaml-validator/) to check if your YAML syntax is correct before loading it into Home Assistant which will save you some time. If you do so, be aware that this is a third-party service and is not maintained by the Home Assistant community.
diff --git a/source/_docs/mqtt/broker.markdown b/source/_docs/mqtt/broker.markdown index 364bc1572f6..e5e42f02a38 100644 --- a/source/_docs/mqtt/broker.markdown +++ b/source/_docs/mqtt/broker.markdown @@ -78,7 +78,7 @@ If you are running a Mosquitto instance on a different server with proper SSL en ### Public broker -The Mosquitto project runs a [public broker](http://test.mosquitto.org). This is the easiest to set up, but there is no privacy as all messages are public. Use this only for testing purposes and not for real tracking of your devices or controlling your home. +The Mosquitto project runs a [public broker](https://test.mosquitto.org). This is the easiest to set up, but there is no privacy as all messages are public. Use this only for testing purposes and not for real tracking of your devices or controlling your home. ```yaml mqtt: @@ -88,7 +88,7 @@ mqtt: # Optional, replace port 1883 with following if you want encryption # (doesn't really matter because broker is public) port: 8883 - # Download certificate from http://test.mosquitto.org/ssl/mosquitto.org.crt + # Download certificate from https://test.mosquitto.org/ssl/mosquitto.org.crt certificate: /home/paulus/downloads/mosquitto.org.crt ``` diff --git a/source/_docs/mqtt/logging.markdown b/source/_docs/mqtt/logging.markdown index 87e937effea..ef77050610a 100644 --- a/source/_docs/mqtt/logging.markdown +++ b/source/_docs/mqtt/logging.markdown @@ -13,4 +13,3 @@ logger: logs: homeassistant.components.mqtt: debug ``` - diff --git a/source/_docs/mqtt/service.markdown b/source/_docs/mqtt/service.markdown index 130ff59e469..f80d37297c7 100644 --- a/source/_docs/mqtt/service.markdown +++ b/source/_docs/mqtt/service.markdown @@ -6,7 +6,7 @@ logo: mqtt.png The MQTT integration will register the service `mqtt.publish` which allows publishing messages to MQTT topics. There are two ways of specifying your payload. You can either use `payload` to hard-code a payload or use `payload_template` to specify a [template](/topics/templating/) that will be rendered to generate the payload. -### Service `mqtt.publish` +## Service `mqtt.publish` | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | @@ -26,10 +26,12 @@ payload: on ``` {% raw %} + ```yaml topic: home-assistant/light/1/state payload_template: "{{ states('device_tracker.paulus') }}" ``` + {% endraw %} `payload` must be a string. If you want to send JSON then you need to format/escape it properly. Like: diff --git a/source/_docs/mqtt/testing.markdown b/source/_docs/mqtt/testing.markdown index 0c7bd51ced2..6a26d86159d 100644 --- a/source/_docs/mqtt/testing.markdown +++ b/source/_docs/mqtt/testing.markdown @@ -4,7 +4,7 @@ description: "Instructions on how to test your MQTT setup." logo: mqtt.png --- -The `mosquitto` broker package ships commandline tools (often as `*-clients` package) to send and receive MQTT messages. As an alternative have a look at [hbmqtt_pub](http://hbmqtt.readthedocs.org/en/latest/references/hbmqtt_pub.html) and [hbmqtt_sub](http://hbmqtt.readthedocs.org/en/latest/references/hbmqtt_sub.html) which are provided by HBMQTT. For sending test messages to a broker running on localhost check the example below: +The `mosquitto` broker package ships commandline tools (often as `*-clients` package) to send and receive MQTT messages. As an alternative have a look at [hbmqtt_pub](https://hbmqtt.readthedocs.org/en/latest/references/hbmqtt_pub.html) and [hbmqtt_sub](https://hbmqtt.readthedocs.org/en/latest/references/hbmqtt_sub.html) which are provided by HBMQTT. For sending test messages to a broker running on localhost check the example below: ```bash mosquitto_pub -h 127.0.0.1 -t home-assistant/switch/1/on -m "Switch is ON" diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown index 4635f680a68..9a991597106 100644 --- a/source/_docs/scripts.markdown +++ b/source/_docs/scripts.markdown @@ -75,6 +75,39 @@ The variables action allows you to set/override variables that will be accessibl {% endraw %} +### Scope of Variables + +Variables have local scope. This means that if a variable is changed in a nested sequence block, that change will not be visible in an outer sequence block. + +The following example will always say "There are 0 people home". Inside the `choose` sequence the `variables` action will only alter the `people` variable for that sequence. + +{% raw %} + +```yaml +sequence: + # Set the people variable to a default value + - variables: + people: 0 + # Try to increment people if Paulus is home + - choose: + - conditions: + - condition: state + entity_id: device_tracker.paulus + state: "home" + sequence: + # At this scope and this point of the sequence, people == 0 + - variables: + people: "{{ people + 1 }}" + # At this scope, people will now be 1 ... + # ... but at this scope it will still be 0 + # Announce the count of people home + - service: notify.notify + data: + message: "There are {{ people }} people home" +``` + +{% endraw %} + ## Test a Condition While executing a script you can add a condition in the main sequence to stop further execution. When a condition does not return `true`, the script will stop executing. There are many different conditions which are documented at the [conditions page]. @@ -161,7 +194,7 @@ The template is re-evaluated whenever an entity ID that it references changes st ### Wait for Trigger -This action can use the same triggers that are available in an automation's `trigger` section. See [Automation Trigger](/docs/automation/trigger). The script will continue whenever any of the triggers fires. All previously defined [trigger_variables](/docs/automation/trigger#trigger_variables), [variables](#variables) and [script variables] are passed to the trigger. +This action can use the same triggers that are available in an automation's `trigger` section. See [Automation Trigger](/docs/automation/trigger). The script will continue whenever any of the triggers fires. All previously defined [trigger variables](/docs/automation/trigger#trigger-variables), [variables](#variables) and [script variables] are passed to the trigger. {% raw %} ```yaml diff --git a/source/_docs/tools/dev-tools.markdown b/source/_docs/tools/dev-tools.markdown index f1de345d3bb..8167a02c335 100644 --- a/source/_docs/tools/dev-tools.markdown +++ b/source/_docs/tools/dev-tools.markdown @@ -110,4 +110,4 @@ The Template Editor provides a way to quickly test templates prior to placing th By default this will contain sample code that illustrates how templates can be written and tested. This sample code can be removed and replaced with your own. You can restore the default example by pressing the "Reset to Demo Template" button beneath the code editor. -For more information about Jinja2, visit [Jinja2 documentation](http://jinja.pocoo.org/docs/dev/templates/), and also read templating document [here](/topics/templating/). +For more information about Jinja2, visit [Jinja2 documentation](https://jinja.palletsprojects.com/templates/), and also read templating document [here](/topics/templating/). diff --git a/source/_docs/z-wave/control-panel.markdown b/source/_docs/z-wave/control-panel.markdown index 8d53023c1b2..8d71fd04d54 100644 --- a/source/_docs/z-wave/control-panel.markdown +++ b/source/_docs/z-wave/control-panel.markdown @@ -144,7 +144,7 @@ If your node has user codes, you can set and delete them. The format is raw hex \x39 = 9 ``` Some non compliant device like tag readers, have implemented to use raw hex code. -Please refer to a hex ASCII table to set your code. Example: http://www.asciitable.com/ +Please refer to a hex ASCII table to set your code. Example: https://www.asciitable.com/ Here is a small Python program than will take numbers on the command line and print the correct sequence for compliant devices: diff --git a/source/_includes/common-tasks/data_disk.md b/source/_includes/common-tasks/data_disk.md new file mode 100644 index 00000000000..0cc4189c0d7 --- /dev/null +++ b/source/_includes/common-tasks/data_disk.md @@ -0,0 +1,66 @@ +## Using external Data Disk + +Home Assistant Operating System supports storing most data on an external storage medium (e.g. USB attached SSD or HDD). This data disk contains not only user data but also most of the Home Assistant software as well (Core, Supervisor etc.). This means a fast data disk will make the system overall much faster. + +![Graphics showing the architecture of the data disk feature](/images/haos/usb-data-disk.png) + +The data disk feature can be used on an existing installation without losing data: The system will move existing data to the external data disk automatically. However, it is recommended to create and download a full Backup before proceeding! + +
+ + All data on the target disk will be overwritten! + +
+ +
+ + The storage capacity of the external data disk must be larger than the storage capacity of the existing (boot) disk. + +
+ +
+ + If you have been using a data disk previously with Home Assistant Operating System, you need to use your host computer to delete all partitions *before* using it as a data disk again. + +
+ +### Using UI to move the data partition + +1. Connect the data disk to your system. +2. Go to **{% my supervisor_info title="Supervisor >> System" %}** in the UI. +3. Press the three dots on the bottom right of the Host card and choose "Move datadisk" +4. Select the data disk from the list of available devices. +5. Press "Move". + +![Screenshot of the "Move datadisk" feature](/images/screenshots/move-datadisk.png) + +### Using CLI to move the data partition + +To see the current data disk use: + +```sh +$ ha os info +... +data_disk: /dev/mmcblk1p4 +... +``` + +To getting a list of supported detected devices which can be used by `datadisk`: + +```sh +ha os datadisk list +``` + +To initiate the move to the new data disk use the `move` command: + +```sh +ha os datadisk move /dev/sdx +``` + +The system will prepare the data disk and immediately reboot. The reboot will take 10 minutes or more depending on the speed of the new data disk; please be patient! + +
+ +Using an USB attached SSD can draw quite some power. For instance on Raspberry Pi 3 the official Raspberry Pi power supply (PSU) only provides 2.5A which can be too tight. Use a more powerful power supply if you experience issues. Alternatively use a powered USB hub. Connect the Hub to one of the USB slots of your Raspberry Pi, and connect the SSD to the Hub. In this setup the power supply of the Hub will power the attached device(s). + +
diff --git a/source/_includes/common-tasks/development_version.md b/source/_includes/common-tasks/development_version.md index 96cde097ae7..a163cdd5269 100644 --- a/source/_includes/common-tasks/development_version.md +++ b/source/_includes/common-tasks/development_version.md @@ -53,7 +53,7 @@ docker pull {{ site.installation.container.base }}:dev 3. Download and install the version you want ```bash - pip3 install --upgrade git+git://github.com/home-assistant/core.git@dev + pip3 install --upgrade git+https://github.com/home-assistant/core.git@dev ``` 4. When that is complete restart the service for it to use the new files. diff --git a/source/_includes/installation/container/alternative.md b/source/_includes/installation/container/alternative.md index ec9aa89e7e7..f62d55ec85b 100644 --- a/source/_includes/installation/container/alternative.md +++ b/source/_includes/installation/container/alternative.md @@ -15,7 +15,7 @@ The steps would be: - Set "Enable auto-restart" if you like - Within "Volume" click on "Add Folder" and choose either an existing folder or add a new folder. The "mount path" has to be "/config", so that Home Assistant will use it for the configs and logs. It is therefore recommended that the folder you choose should be named "config" or "homeassistant/config" to avoid confusion when referencing it within service calls. - Within "Network" select "Use same network as Docker Host" -- To ensure that Home Assistant displays the correct timezone go to the "Environment" tab and click the plus sign then add `variable` = `TZ` & `value` = `Europe/London` choosing [your correct timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) +- To ensure that Home Assistant displays the correct timezone go to the "Environment" tab and click the plus sign then add `variable` = `TZ` & `value` = `Europe/London` choosing [your correct timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) - Confirm the "Advanced Settings" - Click on "Next" and then "Apply" - Your Home Assistant within Docker should now run and will serve the web interface from port 8123 on your Docker host (this will be your Synology NAS IP address - for example `http://192.168.1.10:8123`) @@ -37,7 +37,7 @@ Adjust the following Terminal command as follows : - Replace `/PATH_TO_YOUR_CONFIG` points at the folder where you want to store your configuration - Replace `/PATH_TO_YOUR_USB_STICK` matches the path for your USB stick (e.g., `/dev/ttyACM0` for most Synology users) -- Replace "Australia/Melbourne" with [your timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) +- Replace "Australia/Melbourne" with [your timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) Run it in Terminal. @@ -83,7 +83,7 @@ The steps would be: - Click on "Advanced Settings" - Within "Shared Folders" click on "Volume from host" > "Add" and choose either an existing folder or add a new folder. The "mount point has to be `/config`, so that Home Assistant will use it for the configuration and logs. - Within "Network" and select Network Mode to "Host" -- To ensure that Home Assistant displays the correct timezone go to the "Environment" tab and click the plus sign then add `variable` = `TZ` & `value` = `Europe/London` choosing [your correct timezone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) +- To ensure that Home Assistant displays the correct timezone go to the "Environment" tab and click the plus sign then add `variable` = `TZ` & `value` = `Europe/London` choosing [your correct timezone](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) - Click on "Create" - Wait for some time until your NAS has created the container - Your Home Assistant within Docker should now run and will serve the web interface from port 8123 on your Docker host (this will be your Qnap NAS IP address - for example `http://192.xxx.xxx.xxx:8123`) diff --git a/source/_includes/installation/operating_system.md b/source/_includes/installation/operating_system.md index 7fb69b791e7..87d3385479d 100644 --- a/source/_includes/installation/operating_system.md +++ b/source/_includes/installation/operating_system.md @@ -87,7 +87,7 @@ If you prefer to use a live operating system, follow the instructions of your Li {% endif %} 2. Download and start Balena Etcher 3. Select "Flash from URL" -![etcher_from_url](/images/installation/etcher1.png) +![Screenshot of the Etcher software showing flash from URL selected.](/images/installation/etcher1.png) 4. Get the URL for your {{site.installation.types[page.installation_type].board}}: {% if site.installation.types[page.installation_type].variants.size > 1 %} @@ -121,15 +121,15 @@ If you prefer to use a live operating system, follow the instructions of your Li _Select and copy the URL or use the "copy" button that appear when you hover it._ 1. Paste the URL for your {{site.installation.types[page.installation_type].board}} into Balena Etcher and click "OK" -![etcher_from_url_paste](/images/installation/etcher2.png) +![Screenshot of the Etcher software showing the URL bar with a URL pasted in.](/images/installation/etcher2.png) 6. Balena Etcher will now download the image, when that is done click "Select target" -![etcher_select_target](/images/installation/etcher3.png) +![Screenshot of the Etcher software showing the select target button highlighted.](/images/installation/etcher3.png) 7. Select the {{site.installation.types[page.installation_type].installation_media}} you want to use for your {{site.installation.types[page.installation_type].board}} -![etcher_select_target](/images/installation/etcher4.png) +![Screenshot of the Etcher software showing teh targets available.](/images/installation/etcher4.png) 8. Click on "Flash!" to start writing the image -![etcher_select_target](/images/installation/etcher5.png) +![Screenshot of the Etcher software showing the Flash button highlighted.](/images/installation/etcher5.png) 9. When Balena Etcher is finished writing the image you will get this confirmation -![etcher_select_target](/images/installation/etcher6.png) +![Screenshot of the Etcher software showing that the installation has completed.](/images/installation/etcher6.png) ### Start up your {{site.installation.types[page.installation_type].board}} diff --git a/source/_integrations/airthings.markdown b/source/_integrations/airthings.markdown index 6cc79412233..cf7da18d164 100644 --- a/source/_integrations/airthings.markdown +++ b/source/_integrations/airthings.markdown @@ -4,7 +4,7 @@ description: Instructions on how to integrate Airthings into Home Assistant. ha_category: - Sensor - Environment -ha_release: 2021.10 +ha_release: '2021.10' ha_iot_class: Cloud Polling ha_codeowners: - '@danielhiversen' @@ -16,9 +16,9 @@ ha_platforms: Integrates Airthings sensors into Home Assistant. -[Airthings](https://www.airthings.com/) provide different sensors for meassuring the air quality. The focus specially on Radon sensors. +[Airthings](https://www.airthings.com/) provide different sensors for measuring the air quality. The focus specially on Radon sensors. -Login [here](https://dashboard.airthings.com/integrations/api-integration) to find your credentials +Login [here](https://dashboard.airthings.com/integrations/api-integration) to find your credentials. {% include integrations/config_flow.md %} diff --git a/source/_integrations/amberelectric.markdown b/source/_integrations/amberelectric.markdown index 45b5494da8c..e4686310f3a 100644 --- a/source/_integrations/amberelectric.markdown +++ b/source/_integrations/amberelectric.markdown @@ -4,13 +4,14 @@ description: Instructions on how to integrate Amber Electric live prices within ha_category: - Sensor - Energy -ha_release: "2021.10" +ha_release: '2021.10' ha_iot_class: Cloud Polling ha_config_flow: true ha_codeowners: - - "@madpilot" + - '@madpilot' ha_domain: amberelectric ha_platforms: + - binary_sensor - sensor --- diff --git a/source/_integrations/analytics.markdown b/source/_integrations/analytics.markdown index cddcd7ba759..34ca991779c 100644 --- a/source/_integrations/analytics.markdown +++ b/source/_integrations/analytics.markdown @@ -20,7 +20,7 @@ Home Assistant allows users to share their usage data via the analytics integrat The information sent depends on what options you opt-in to. You can opt-in during onboarding and by going to **{% my general title="Configuration >> General" %}** . -**{% my general badge %}** +{% my general badge %} When enabled, data will be sent 15 minutes after each start, and every 24h after startup. Sent data is printed to your log. @@ -74,7 +74,7 @@ This includes: - The names of all your core integrations - The names and versions of all your custom integrations if you have any -- Boolean to indicate that the [`energy` integration](/integrations/energy) is configured +- Boolean to indicate that the [energy integration](/integrations/energy) is configured If your system includes the Supervisor, this will also contain: diff --git a/source/_integrations/aurora_abb_powerone.markdown b/source/_integrations/aurora_abb_powerone.markdown index 0752dce0833..e0ab3265ead 100644 --- a/source/_integrations/aurora_abb_powerone.markdown +++ b/source/_integrations/aurora_abb_powerone.markdown @@ -13,17 +13,17 @@ ha_platforms: - sensor --- -This implements a direct RS485 connection to a solar inverter in the +This implements a direct RS485 connection to a solar inverter in the PVI-3.0/3.6/4.2-TL-OUTD ABB series, and may work on others. The inverter was formerly made by PowerOne who got taken over by ABB. -The TCP/IP method of communicating with inverters is supported by the +The TCP/IP method of communicating with inverters is supported by the Python library, but not by this implementation in this integration. This integration provides a single sensor which reports the live power output in watts. -Note the PV inverter will be unresponsive to communications when in darkness, +Note the PV inverter will be unresponsive to communications when in darkness, so the value 'unknown' will be displayed during the night. ## Configuration @@ -39,7 +39,7 @@ sensor: {% configuration %} device: - description: The serial port your RS485 adaptor is connected to. + description: The serial port your RS485 adapter is connected to. required: true type: string address: diff --git a/source/_integrations/azure_event_hub.markdown b/source/_integrations/azure_event_hub.markdown index 03c3e9e4e33..e8989741c74 100644 --- a/source/_integrations/azure_event_hub.markdown +++ b/source/_integrations/azure_event_hub.markdown @@ -10,13 +10,13 @@ ha_codeowners: ha_domain: azure_event_hub --- -The `Azure Event Hub` integration allows you to hook into the Home Assistant event bus and send events to [Azure Event Hub](https://azure.microsoft.com/en-us/services/event-hubs/) or to a [Azure IoT Hub](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messages-read-builtin). +The `Azure Event Hub` integration allows you to hook into the Home Assistant event bus and send events to [Azure Event Hub](https://azure.microsoft.com/en-us/services/event-hubs/) or to an [Azure IoT Hub](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messages-read-builtin). ## First time setup -This assumes you already have a Azure account. Otherwise create a Free account [here](https://azure.microsoft.com/en-us/free/). +This assumes you already have an Azure account. Otherwise create a Free account [here](https://azure.microsoft.com/en-us/free/). -You need to create a Event Hub namespace and a Event Hub in that namespace, you can follow [this guide](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-create). Alternatively you can directly deploy an ARM template with the namespace and the Event Hub [from here](https://github.com/Azure/azure-quickstart-templates/tree/master/201-event-hubs-create-event-hub-and-consumer-group/). +You need to create an Event Hub namespace and an Event Hub in that namespace, you can follow [this guide](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-create). Alternatively you can directly deploy an ARM template with the namespace and the Event Hub [from here](https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.eventhub/event-hubs-create-event-hub-and-consumer-group). You must then create a Shared Access Policy for the Event Hub with 'Send' claims or use the RootManageAccessKey from your namespace (this key has additional claims, including managing the event hub and listening, which are not needed for this purpose), for more details on the security of Event Hubs [go here](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-authentication-and-security-model-overview). @@ -171,8 +171,8 @@ azure_event_hub: There are a number of ways to stream the data that comes into the Event Hub into storages in Azure, the easiest way is to use the built-in Capture function and this allows you to capture the data in Azure Blob Storage or Azure Data Lake store, [details here](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-capture-overview). -Other storages in Azure (and outside) are possible with a [Azure Stream Analytics job](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-define-inputs#stream-data-from-event-hubs), for instance for [Cosmos DB](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-documentdb-output), [Azure SQL DB](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-sql-output-perf), [Azure Table Storage](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-define-outputs#table-storage), custom writing to [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-custom-path-patterns-blob-storage-output) and [Topic and Queues](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-quick-create-portal#configure-job-output). +Other storages in Azure (and outside) are possible with an [Azure Stream Analytics job](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-define-inputs#stream-data-from-event-hubs), for instance for [Cosmos DB](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-documentdb-output), [Azure SQL DB](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-sql-output-perf), [Azure Table Storage](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-define-outputs#table-storage), custom writing to [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-custom-path-patterns-blob-storage-output) and [Topic and Queues](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-quick-create-portal#configure-job-output). On the analytical side, Event Hub can be directly fed into [Azure Databricks Spark](https://docs.microsoft.com/en-us/azure/azure-databricks/databricks-stream-from-eventhubs?toc=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fevent-hubs%2FTOC.json&bc=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fbread%2Ftoc.json), [Azure Time Series Insights](https://docs.microsoft.com/en-us/azure/time-series-insights/time-series-insights-how-to-add-an-event-source-eventhub) and [Microsoft Power BI](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-tutorial-visualize-anomalies). -The final way to use the data in Azure is to connect a Azure Function to the Event Hub using the [Event Hub trigger binding](https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-hubs). +The final way to use the data in Azure is to connect an Azure Function to the Event Hub using the [Event Hub trigger binding](https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-hubs). diff --git a/source/_integrations/blackbird.markdown b/source/_integrations/blackbird.markdown index 45a7266394b..a138337b023 100644 --- a/source/_integrations/blackbird.markdown +++ b/source/_integrations/blackbird.markdown @@ -10,9 +10,9 @@ ha_platforms: - media_player --- -The `blackbird` platform allows you to control [Monoprice Blackbird Matrix Switch](https://www.monoprice.com/product?p_id=21819) using a serial connection. +The `blackbird` platform allows you to control [Monoprice Blackbird Matrix Switch](https://www.monoprice.com/product?p_id=21819) (8x8) using a serial or IP connection, this integration does not support the 4x4 matrix switch. -To add a Blackbird device to your installation, add the following to your `configuration.yaml` file: +To add a Blackbird 8x8 device to your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry diff --git a/source/_integrations/bluesound.markdown b/source/_integrations/bluesound.markdown index ffa051049c0..a8c5bd8562f 100644 --- a/source/_integrations/bluesound.markdown +++ b/source/_integrations/bluesound.markdown @@ -1,7 +1,6 @@ --- title: Bluesound description: Instructions on how to integrate Bluesound devices into Home Assistant. -logo: bluesound.png ha_category: - Media Player ha_release: 0.51 diff --git a/source/_integrations/bmp280.markdown b/source/_integrations/bmp280.markdown index 8172c8e9524..5ae64297615 100644 --- a/source/_integrations/bmp280.markdown +++ b/source/_integrations/bmp280.markdown @@ -15,7 +15,7 @@ ha_platforms: - sensor --- -The `bmp280` sensor platform allows you to read temperature and pressure values of a [Bosch BMP280 Environmental sensor](https://www.bosch-sensortec.com/products/environmental-sensors/pressure-sensors/pressure-sensors-bmp280-1.html) connected via [I2C](https://en.wikipedia.org/wiki/I²C) bus (SDA, SCL pins). +The `bmp280` sensor platform allows you to read temperature and pressure values of a [Bosch BMP280 Environmental sensor](https://www.bosch-sensortec.com/products/environmental-sensors/pressure-sensors/bmp280/) connected via [I2C](https://en.wikipedia.org/wiki/I²C) bus (SDA, SCL pins). This integration has been tested on a Raspberry Pi 4B, but it should work on any device which is supported by [CircuitPython](https://circuitpython.org/). diff --git a/source/_integrations/bond.markdown b/source/_integrations/bond.markdown index 48b7f6813fb..17ad3701a7d 100644 --- a/source/_integrations/bond.markdown +++ b/source/_integrations/bond.markdown @@ -12,6 +12,7 @@ ha_release: 0.113 ha_domain: bond ha_codeowners: - '@prystupa' + - '@joshs85' ha_config_flow: true ha_quality_scale: platinum ha_zeroconf: true diff --git a/source/_integrations/brother.markdown b/source/_integrations/brother.markdown index 38131400b01..db3a927dc9d 100644 --- a/source/_integrations/brother.markdown +++ b/source/_integrations/brother.markdown @@ -37,21 +37,21 @@ For some Brother devices, `SNMPv3 read-write access and v1/v2c read-only access` ## Sensor Example -You can configure Home Assistant to alert you when the printer jams or runs out of paper as follows. First, add the following to `configuration.yaml` under the `binary_sensor:` section (replace `sensor.hl_l2340d_status` with the actual name of your sensor): +You can configure Home Assistant to alert you when the printer jams or runs out of paper as follows. First, add the following to `configuration.yaml` under the `template:` section (Note: replace `sensor.hl_l2340d_status` with the actual name of your sensor): {% raw %} ```yaml - - platform: template - sensors: - laser_out_of_paper: - value_template: "{{ is_state('sensor.hl_l2340d_status', 'no paper') }}" - friendly_name: "Laser Printer Out of Paper" - - platform: template - sensors: - laser_paper_jam: - value_template: "{{ is_state('sensor.hl_l2340d_status', 'paper jam') }}" - friendly_name: "Laser Printer Paper Jam" +template: + - binary_sensor: + - name: 'Laser Printer Out Of Paper' + state: > + {{ is_state('sensor.hl_l2340d_status', 'no paper') }} + + - binary_sensor: + - name: 'Later Printer Paper Jam' + state: > + {{ is_state('sensor.hl_l2340d_status', 'paper jam') }} ``` {% endraw %} @@ -62,14 +62,15 @@ Then, add this under the `alert:` section: laser_out_of_paper: name: Laser Printer is Out of Paper done_message: Laser Printer Has Paper - entity_id: binary_sensor.laser_out_of_paper + entity_id: binary_sensor.laser_printer_out_of_paper can_acknowledge: true notifiers: - my_phone_notify + laser_paper_jam: name: Laser Printer has a Paper Jam done_message: Laser Printer Paper Jam Cleared - entity_id: binary_sensor.laser_paper_jam + entity_id: binary_sensor.laser_printer_paper_jam can_acknowledge: true notifiers: - my_phone_notify diff --git a/source/_integrations/caldav.markdown b/source/_integrations/caldav.markdown index 98abca786f1..29d9b45617f 100644 --- a/source/_integrations/caldav.markdown +++ b/source/_integrations/caldav.markdown @@ -127,7 +127,7 @@ verify_ssl: ## Sensor attributes -- **offset_reached**: If set in the event title and parsed out will be on/off once the offset in the title in minutes is reached. So the title Very important meeting !!-10 would trigger this attribute to be on 10 minutes before the event starts. This should be in the format of `HH:MM` or `MM`. +- **offset_reached**: If set in the event title and parsed out will be on/off once the offset in the title in minutes is reached. So the title Very important meeting !! `-10` would trigger this attribute to be on 10 minutes before the event starts. This should be in the format of `HH:MM` or `MM`. - **all_day**: `True/False` if this is an all day event. Will be `False` if there is no event found. - **message**: The event title with the `search` values extracted. So in the above example for `offset_reached` the message would be set to Very important meeting - **description**: The event description. diff --git a/source/_integrations/cast.markdown b/source/_integrations/cast.markdown index 30f8f2b07ac..b2d71fda26a 100644 --- a/source/_integrations/cast.markdown +++ b/source/_integrations/cast.markdown @@ -52,6 +52,14 @@ Home Assistant Cast requires your Home Assistant installation to be accessible v ## Playing media +
+ +Chromecasts generally ignore DNS servers from DHCP and will instead use Google's DNS servers, 8.8.8.8 and 8.8.4.4. This means media URLs must either be specifying the IP-address of the server directly, e.g. `http://192.168.1.1:8123/movie.mp4`, or be publicly resolvable, e.g. `http://homeassistant.internal.mydomain.com:8123/movie.mp4` where `homeassistant.internal.mydomain.com` resolves to `129.168.1.1`. A hostname which can't be publicly resolved, e.g. `http://homeassistant.local:8123/movie.mp4` will fail to play. + +This is important when casting TTS or local media sources; the cast integration will cast such media from the `external_url` if [configured](/docs/configuration/basic), otherwise from the Home Assistant Cloud if configured, otherwise from the [`internal_url`](/docs/configuration/basic). Note that the Home Assistant Cloud will not be used if an `external_url` is configured. + +
+ ### Using the built in media player app (Default Media Receiver) Chromecasts can play many kinds of modern [media (image/audio/video) formats](https://developers.google.com/cast/docs/media) using the built in app Default Media Receiver. As a rule of thumb, if a Chrome browser can play a media file a Chromecast will be able to handle that too. diff --git a/source/_integrations/cover.mqtt.markdown b/source/_integrations/cover.mqtt.markdown index 04e0d2b9b46..34647ce56b1 100644 --- a/source/_integrations/cover.mqtt.markdown +++ b/source/_integrations/cover.mqtt.markdown @@ -341,7 +341,7 @@ cover: command_topic: "home-assistant/cover/set" position_topic: "home-assistant/cover/position" availability: - - "home-assistant/cover/availability" + - topic: "home-assistant/cover/availability" set_position_topic: "home-assistant/cover/set_position" qos: 0 retain: true diff --git a/source/_integrations/crownstone.markdown b/source/_integrations/crownstone.markdown index fd3274ce4c4..5c10408bb5b 100644 --- a/source/_integrations/crownstone.markdown +++ b/source/_integrations/crownstone.markdown @@ -3,14 +3,15 @@ title: Crownstone description: Instructions on how to setup the Crownstone integration within Home Assistant. ha_category: - Light -ha_iot_class: Cloud Push +ha_iot_class: Cloud Push ha_release: '2021.10' ha_config_flow: true -ha_quality_scale: silver ha_codeowners: - '@Crownstone' - '@RicArch97' ha_domain: crownstone +ha_platforms: + - light --- The Crownstone integration allows you to control your Crownstones either via the cloud or using a [Crownstone USB](#crownstone-usb) dongle. diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown index 2e089ec8d05..98cf981de0b 100644 --- a/source/_integrations/deconz.markdown +++ b/source/_integrations/deconz.markdown @@ -37,7 +37,6 @@ ha_platforms: [deCONZ](https://www.dresden-elektronik.de/funk/software/deconz.html) by [dresden elektronik](https://www.dresden-elektronik.de) is a software that communicates with ConBee/RaspBee Zigbee gateways and exposes Zigbee devices that are connected to the gateway. -[deCONZ REST API](https://dresden-elektronik.github.io/deconz-rest-doc/). There is currently support for the following device types within Home Assistant: @@ -63,7 +62,7 @@ See [deCONZ wiki](https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/ {% include integrations/config_flow.md %} -Running a stand-alone instance of deCONZ (non add-on installation) requires a pairing between the deCONZ gateway and Home Assistant. To allow Home Assistant to connect with deCONZ go to the Phoscon UI click Settings -> Gateway -> Advanced and press the "Authenticate app" button. This same information is also shown during the config flow of the deCONZ integration. +Running a stand-alone instance of deCONZ (non add-on installation) requires a pairing between the deCONZ gateway and Home Assistant. To allow Home Assistant to connect with deCONZ go to the Phoscon **UI click Settings -> Gateway -> Advanced** and press the "Authenticate app" button. This same information is also shown during the config flow of the deCONZ integration. ## Debugging integration @@ -91,7 +90,7 @@ Available services: `configure`, `deconz.device_refresh` and `deconz.remove_orph ### Service `deconz.configure` -Set attribute of device in deCONZ using [REST-API](https://dresden-elektronik.github.io/deconz-rest-doc/rest/). +Set the attribute of device in deCONZ using [REST-API](https://dresden-elektronik.github.io/deconz-rest-doc/about_rest/). | Service data attribute | Optional | Description | | ---------------------- | -------- | --------------------------------------------------------------------------- | diff --git a/source/_integrations/denonavr.markdown b/source/_integrations/denonavr.markdown index 989734ab63c..59beef92ead 100644 --- a/source/_integrations/denonavr.markdown +++ b/source/_integrations/denonavr.markdown @@ -125,7 +125,7 @@ So for example, the above command `/goform/formiPhoneAppDirect.xml?VSMONI2` will
-The denonavr platform supports the standard media player controls such as `turn_on` and `volume_up`. Thus calling the service `media_player.turn_on` is equivalent to calling `denonavr.get_command` with the command `/goform/formiPhoneAppDirect.xml?PWON`. See [media_player](/integrations/meida_player/) for more details. +The denonavr platform supports the standard media player controls such as `turn_on` and `volume_up`. Thus calling the service `media_player.turn_on` is equivalent to calling `denonavr.get_command` with the command `/goform/formiPhoneAppDirect.xml?PWON`. See [media_player](/integrations/media_player/) for more details.
diff --git a/source/_integrations/dlna_dmr.markdown b/source/_integrations/dlna_dmr.markdown index d33df1f2046..e5f61e1c15f 100644 --- a/source/_integrations/dlna_dmr.markdown +++ b/source/_integrations/dlna_dmr.markdown @@ -10,7 +10,6 @@ ha_codeowners: - '@StevenLooman' - '@chishm' ha_domain: dlna_dmr -ha_ssdp: true ha_platforms: - media_player --- diff --git a/source/_integrations/ecovacs.markdown b/source/_integrations/ecovacs.markdown index 795c2db74e7..0b784dc1b4c 100644 --- a/source/_integrations/ecovacs.markdown +++ b/source/_integrations/ecovacs.markdown @@ -70,7 +70,7 @@ logger: sucks: debug ``` -Warning: doing this will cause your authentication token to visible in your log files. Be sure to remove any tokens and other authentication details from your log before posting them in an issue. +**Warning**: doing this will cause your authentication token to be visible in your log files. Be sure to remove any tokens and other authentication details from your log before posting them in an issue. ## Vacuum diff --git a/source/_integrations/epsonworkforce.markdown b/source/_integrations/epsonworkforce.markdown index ad51e194604..b4e99f0cb18 100644 --- a/source/_integrations/epsonworkforce.markdown +++ b/source/_integrations/epsonworkforce.markdown @@ -37,7 +37,7 @@ host: required: true type: string monitored_conditions: - description: The cartridge colours to monitor. + description: The cartridge colours to monitor. required: true type: list keys: @@ -50,14 +50,14 @@ monitored_conditions: magenta: description: The magenta (=red) ink cartridge. cyan: - description: The cyan (=blue) ink cartridge. + description: The cyan (=blue) ink cartridge. clean: - description: The cleaning cartridge. + description: The cleaning cartridge. {% endconfiguration %} Supported devices: -- Epson Workforce (and some EcoTank) printers who publish a HTTP page containing the ink cardridge levels +- Epson Workforce (and some EcoTank) printers who publish a HTTP page containing the ink cartridge levels Tested devices: @@ -67,7 +67,8 @@ Tested devices: - Epson WF3640 - Epson EcoTank ET-77x0 - Epson ET-2650 +- Espon ET-4750 - Epson Expression Home XP-2105 To make this module work you need to connect your printer to your LAN. -The best is to navigate to the status page of the printer to check if it shows the page with the ink levels on the URL http:///PRESENTATION/HTML/TOP/PRTINFO.HTML +The best is to navigate to the status page of the printer to check if it shows the page with the ink levels on the URL `http:///PRESENTATION/HTML/TOP/PRTINFO.HTML` diff --git a/source/_integrations/etherscan.markdown b/source/_integrations/etherscan.markdown index 9d66ece6a68..60ee4ad9de8 100644 --- a/source/_integrations/etherscan.markdown +++ b/source/_integrations/etherscan.markdown @@ -1,7 +1,6 @@ --- title: Etherscan description: Instructions on how to integrate Etherscan.io data within Home Assistant. -logo: etherscan.png ha_category: - Finance ha_release: 0.47 diff --git a/source/_integrations/everlights.markdown b/source/_integrations/everlights.markdown index 00bee6f113d..810bfcd4d30 100644 --- a/source/_integrations/everlights.markdown +++ b/source/_integrations/everlights.markdown @@ -1,7 +1,6 @@ --- title: EverLights description: Instructions on how to set up EverLights within Home Assistant. -logo: everlights.png ha_category: - Light ha_iot_class: Local Polling diff --git a/source/_integrations/file.markdown b/source/_integrations/file.markdown index c9f4c9bc856..c0d4c2466d5 100644 --- a/source/_integrations/file.markdown +++ b/source/_integrations/file.markdown @@ -141,4 +141,3 @@ sensor: ``` {% endraw %} - diff --git a/source/_integrations/flipr.markdown b/source/_integrations/flipr.markdown index 04147886bfa..de9583c337a 100644 --- a/source/_integrations/flipr.markdown +++ b/source/_integrations/flipr.markdown @@ -10,6 +10,7 @@ ha_codeowners: - '@cnico' ha_domain: flipr ha_platforms: + - binary_sensor - sensor --- diff --git a/source/_integrations/foscam.markdown b/source/_integrations/foscam.markdown index e2db7f57724..57f6c28b196 100644 --- a/source/_integrations/foscam.markdown +++ b/source/_integrations/foscam.markdown @@ -160,4 +160,4 @@ elements: ### Extra CGI Commands -Foscam Webcams which support CGI Commands can be controlled by Home Assistant ([Source](https://www.iltucci.com/blog/wp-content/uploads/2018/12/Foscam-IPCamera-CGI-User-Guide-V1.0.4.pdf)). +Foscam Webcams which support CGI Commands can be controlled by Home Assistant ([Source](https://www.foscam.es/descarga/Foscam-IPCamera-CGI-User-Guide-AllPlatforms-2015.11.06.pdf)). diff --git a/source/_integrations/fritz.markdown b/source/_integrations/fritz.markdown index 7ae3e2e8c07..d1b52bd39ad 100644 --- a/source/_integrations/fritz.markdown +++ b/source/_integrations/fritz.markdown @@ -100,10 +100,9 @@ As a result, this integration will create entities only for rules that have your ## Example Automations and Scripts +### Script: Reconnect / get new IP -**Script: Reconnect / get new IP** - -The following script can be used to easily add a reconnect button to your UI. If you want to reboot your FRITZ!Box, you can use `fritzbox_tools.reboot` instead. +The following script can be used to easily add a reconnect button to your UI. If you want to reboot your FRITZ!Box, you can use `fritz.reboot` instead. ```yaml fritz_box_reconnect: @@ -111,37 +110,38 @@ fritz_box_reconnect: sequence: - service: fritz.reconnect target: - entity_id: binary_sensor.fritz_box_7530_connectivity + entity_id: binary_sensor.fritzbox_7530_connection ``` -**Automation: Reconnect / get new IP every night** + +### Automation: Reconnect / get new IP every night ```yaml automation: -- alias: "System: Reconnect FRITZ!Box" +- alias: "System - Reconnect FRITZ!Box" trigger: - platform: time at: "05:00:00" action: - service: fritz.reconnect target: - entity_id: binary_sensor.fritzbox_x_connectivity + entity_id: binary_sensor.fritzbox_7530_connection ``` -**Automation: Phone notification with wifi credentials when guest wifi is created** +### Automation: Phone notification with Wi-fi credentials when guest Wi-fi is created ```yaml automation: - - alias: "Guests Wifi Turned On -> Send Password To Phone" + - alias: "Guests Wi-fi Turned On -> Send Password To Phone" trigger: - platform: state - entity_id: switch.fritzbox_x_wifi_x + entity_id: switch.fritzbox_7530_wifi_myssid to: "on" action: - service: notify.notify data: - title: "Guest wifi is enabled" + title: "Guest Wi-Fi is enabled" message: "Password: ..." ``` diff --git a/source/_integrations/graphite.markdown b/source/_integrations/graphite.markdown index 03b766a0650..887f5acf636 100644 --- a/source/_integrations/graphite.markdown +++ b/source/_integrations/graphite.markdown @@ -1,7 +1,6 @@ --- title: Graphite description: Instructions on how to record Home Assistant history in Graphite. -logo: graphite.png ha_category: - History ha_release: 0.13 diff --git a/source/_integrations/group.markdown b/source/_integrations/group.markdown index b7765ee2d4d..fd59692e83c 100644 --- a/source/_integrations/group.markdown +++ b/source/_integrations/group.markdown @@ -10,6 +10,7 @@ ha_codeowners: - '@home-assistant/core' ha_domain: group ha_platforms: + - binary_sensor - cover - light - media_player diff --git a/source/_integrations/harmony.markdown b/source/_integrations/harmony.markdown index 2ef615d5bbf..5f403dbc461 100644 --- a/source/_integrations/harmony.markdown +++ b/source/_integrations/harmony.markdown @@ -11,6 +11,7 @@ ha_codeowners: - '@bramkragten' - '@bdraco' - '@mkeesey' + - '@Aohzan' ha_domain: harmony ha_ssdp: true ha_platforms: @@ -184,15 +185,14 @@ Template sensors can be utilized to display current activity in the frontend. {% raw %} ```yaml -sensor: - - platform: template - sensors: - family_room: - value_template: '{{ state_attr("remote.family_room", "current_activity") }}' - friendly_name: "Family Room" - bedroom: - value_template: '{{ state_attr("remote.bedroom", "current_activity") }}' - friendly_name: "bedroom" +template: + - sensor: + - name: 'Family Room Harmony Remote' + state: > + {{ state_attr('remote.family_room', 'current_activity') }} + - name: 'Bedroom Harmony Remote' + state: > + {{ state_attr('remote.bedroom', 'current_activity') }} ``` {% endraw %} diff --git a/source/_integrations/hive.markdown b/source/_integrations/hive.markdown index 9b9c459ebc1..1cf937258f3 100644 --- a/source/_integrations/hive.markdown +++ b/source/_integrations/hive.markdown @@ -67,7 +67,7 @@ script: ### Service `hive.boost_heating_off` -You can use the service `hive.boost_heating_off` to set your heating to boost for a period of time at a certain target temperature". Individual TRVs can also be boosted in the same way, using this service. +You can use the service `hive.boost_heating_off` to turn your heating boost off. | Service data attribute | Optional | Description | | ---------------------- | -------- | ---------------------------------------------- | diff --git a/source/_integrations/home_plus_control.markdown b/source/_integrations/home_plus_control.markdown index 79d8af2c5fb..e35f21c1ced 100644 --- a/source/_integrations/home_plus_control.markdown +++ b/source/_integrations/home_plus_control.markdown @@ -30,6 +30,10 @@ This integration has been tested to work with the following range of Legrand pro - Valena Next™ with Netatmo +This integration has also been tested to work with the following range of BTicino products + +- Living Now (Light switches) + ## Authentication Before you are able to configure the Legrand Home + Control integration into Home Assistant, you must register with the *Works with Legrand* platform. diff --git a/source/_integrations/homeworks.markdown b/source/_integrations/homeworks.markdown index 40112375148..4698ad22a14 100644 --- a/source/_integrations/homeworks.markdown +++ b/source/_integrations/homeworks.markdown @@ -42,7 +42,7 @@ homeworks: {% configuration %} host: - description: The IP address of the ethernet to serial adapter. It is assumed that the adaptor has been preconfigured. + description: The IP address of the ethernet to serial adapter. It is assumed that the adapter has been preconfigured. required: true type: string port: diff --git a/source/_integrations/hp_ilo.markdown b/source/_integrations/hp_ilo.markdown index 9739acc9904..68cee7e1dcd 100644 --- a/source/_integrations/hp_ilo.markdown +++ b/source/_integrations/hp_ilo.markdown @@ -114,6 +114,7 @@ sensor: value_template: '{{ ilo_data.temperature["01-Inlet Ambient"].currentreading[0] }}' - name: Server Health sensor_type: server_health + value_template: '{{ ilo_data.health_at_a_glance }}' ``` {% endraw %} diff --git a/source/_integrations/hue.markdown b/source/_integrations/hue.markdown index 834a272d462..c9ac8556007 100644 --- a/source/_integrations/hue.markdown +++ b/source/_integrations/hue.markdown @@ -19,6 +19,7 @@ ha_platforms: - binary_sensor - light - sensor +ha_zeroconf: true --- The Philips Hue integration allows you to control and monitor the lights and motion sensors connected to your Hue bridge. diff --git a/source/_integrations/hunterdouglas_powerview.markdown b/source/_integrations/hunterdouglas_powerview.markdown index 1ba5a0b9e21..a5838e5a35c 100644 --- a/source/_integrations/hunterdouglas_powerview.markdown +++ b/source/_integrations/hunterdouglas_powerview.markdown @@ -20,7 +20,7 @@ ha_zeroconf: true ha_dhcp: true --- -The `hunterdouglas_powerview` integration allows you to integrate your [Hunter Douglas PowerView](https://www.hunterdouglas.com/operating-systems/powerview-motorization/support) devices in Home Assistant. +The `hunterdouglas_powerview` integration allows you to integrate your [Hunter Douglas PowerView](https://www.hunterdouglas.com/operating-systems/powerview-motorization/support) devices in Home Assistant. The product is also known by the brand name Luxaflex Powerview in Europe and Australia [as explained on their website](https://www.hunterdouglasgroup.com/company/brands-in-action/), however this integration should work for both brands. There is currently support for the following device types within Home Assistant: diff --git a/source/_integrations/iotawatt.markdown b/source/_integrations/iotawatt.markdown index f47f1436428..9dfc1d06d5e 100644 --- a/source/_integrations/iotawatt.markdown +++ b/source/_integrations/iotawatt.markdown @@ -13,6 +13,7 @@ ha_codeowners: ha_platforms: - sensor --- + Integration for the [IoTaWatt](https://www.iotawatt.com/) Open WiFi Electricity Monitor. It will collect data from the Current Transformer Clamps (Input CTs) and any Outputs that are defined on the IoTaWatt and create them as sensors in Home Assistant. diff --git a/source/_integrations/keyboard_remote.markdown b/source/_integrations/keyboard_remote.markdown index 7db0b3aa9f3..d7f7ed717a8 100644 --- a/source/_integrations/keyboard_remote.markdown +++ b/source/_integrations/keyboard_remote.markdown @@ -102,7 +102,7 @@ automation: `device_descriptor` or `device_name` may be specified in the trigger so the automation will be fired only for that keyboard. This is especially useful if you wish to use several Bluetooth remotes to control different devices. Omit them to ensure the same key triggers the automation for all keyboards/remotes. -`key_code` should be set to the code generated by the key press, otherwise the trigger will file on every key press. +`key_code` should be set to the code generated by the key press, otherwise the trigger will fire on every key press. `type` can optionally be set to one of `key_down`, `key_up`, or `key_hold` to limit the trigger to that specific event type. ## Disconnections diff --git a/source/_integrations/kodi.markdown b/source/_integrations/kodi.markdown index 1d59971c579..5d6ee2eb141 100644 --- a/source/_integrations/kodi.markdown +++ b/source/_integrations/kodi.markdown @@ -19,7 +19,7 @@ ha_platforms: The `kodi` platform allows you to control a [Kodi](https://kodi.tv/) multimedia system from Home Assistant. -The preferred way to set up the Kodi platform is by through discovery, which requires an enabled [web interface](https://kodi.wiki/view/Web_interface) on your Kodi installation. +The preferred way to set up the Kodi platform is through discovery, which requires an enabled [web interface](https://kodi.wiki/view/Web_interface) on your Kodi installation. There is currently support for the following device types within Home Assistant: diff --git a/source/_integrations/lametric.markdown b/source/_integrations/lametric.markdown index dbbdf083411..04a322e8f3b 100644 --- a/source/_integrations/lametric.markdown +++ b/source/_integrations/lametric.markdown @@ -1,7 +1,6 @@ --- title: LaMetric description: Instructions on how to integrate LaMetric with Home Assistant. -logo: lametric.png ha_category: - Hub - Notifications diff --git a/source/_integrations/launch_library.markdown b/source/_integrations/launch_library.markdown index 3e11ca6eeb1..0b8e8346f3a 100644 --- a/source/_integrations/launch_library.markdown +++ b/source/_integrations/launch_library.markdown @@ -1,7 +1,6 @@ --- title: Launch Library description: Instructions on how to integrate space launch information within Home Assistant. -logo: rocket.png ha_category: - Sensor ha_iot_class: Cloud Polling diff --git a/source/_integrations/linux_battery.markdown b/source/_integrations/linux_battery.markdown index 2cfaa13d0cf..9f549ce4c90 100644 --- a/source/_integrations/linux_battery.markdown +++ b/source/_integrations/linux_battery.markdown @@ -1,7 +1,6 @@ --- title: Linux Battery description: Instructions on how to integrate Linux Battery information into Home Assistant. -logo: linux_battery.png ha_category: - System Monitor ha_release: 0.28 diff --git a/source/_integrations/lock.template.markdown b/source/_integrations/lock.template.markdown index 40fadbbe30e..235b99b3b4b 100644 --- a/source/_integrations/lock.template.markdown +++ b/source/_integrations/lock.template.markdown @@ -77,7 +77,7 @@ lock: ## Considerations -If you are using the state of a platform that takes extra time to load, the Template Lock may get an `unknown` state during startup. This results in error messages in your log file until that platform has completed loading. If you use `is_state()` function in your template, you can avoid this situation. For example, you would replace {% raw %}`{{ is_state('switch.source', 'on') }}`{% endraw %} with this equivalent that returns `true`/`false` and never gives an unknown result: {% raw %}`{{ is_state('switch.source', 'on') }}`{% endraw %} +If you are using the state of a platform that takes extra time to load, the Template Lock may get an `unknown` state during startup. This results in error messages in your log file until that platform has completed loading. If you use `is_state()` function in your template, you can avoid this situation. For example, you would replace {% raw %}`{{ state('switch.source') == 'on') }}`{% endraw %} with this equivalent that returns `true`/`false` and never gives an unknown result: {% raw %}`{{ is_state('switch.source', 'on') }}`{% endraw %} ## Examples diff --git a/source/_integrations/lutron_caseta.markdown b/source/_integrations/lutron_caseta.markdown index 63ab3530439..57845c6a5d2 100644 --- a/source/_integrations/lutron_caseta.markdown +++ b/source/_integrations/lutron_caseta.markdown @@ -46,16 +46,16 @@ Additionally RA2 Select Main Repeater (`RR-SEL-REP2-BL`) or Lutron Caséta Smart - Pico Remotes as [device triggers](/integrations/device_automation/) - Shade Remotes as [device triggers](/integrations/device_automation/) +When configured, the Lutron Caséta integration will automatically discover the currently supported devices as set up in the Lutron Smart Bridge. The name assigned in the Lutron mobile app will be used to form the `entity_id` used in Home Assistant. e.g., a dimmer called 'Lamp' in a room called 'Bedroom' becomes `light.bedroom_lamp` in Home Assistant. + {% include integrations/config_flow.md %} -## Manual configuration - -Alternatively, if you already have `caseta.key`, `caseta.crt`, `caseta-bridge.crt`, and cannot physically access the bridge to press the button, pairing can be done manually using the following steps: - -When configured, the `lutron_caseta` integration will automatically discover the currently supported devices as setup in the Lutron Smart Bridge. The name assigned in the Lutron mobile app will be used to form the `entity_id` used in Home Assistant. e.g., a dimmer called 'Lamp' in a room called 'Bedroom' becomes `light.bedroom_lamp` in Home Assistant. +## Manual hub configuration To use Lutron Caseta devices in your installation, you must first log in to your Lutron account and generate a certificate that allows Home Assistant to connect to your bridge. This can be accomplished by downloading and executing [get_lutron_cert.py](https://github.com/gurumitts/pylutron-caseta/blob/master/get_lutron_cert.py), which will generate three files: caseta.key, caseta.crt, caseta-bridge.crt when you run it. See the instructions at the top of the script for more information. +If you already have `caseta.key`, `caseta.crt`, `caseta-bridge.crt`, and cannot physically access the bridge to press the button, pairing can be done by utilizing these existing files. + Once you have the three necessary files, place them in your configuration directory and add the following to your `configuration.yaml`: ```yaml diff --git a/source/_integrations/marytts.markdown b/source/_integrations/marytts.markdown index a29f1539765..918e30afd18 100644 --- a/source/_integrations/marytts.markdown +++ b/source/_integrations/marytts.markdown @@ -76,15 +76,15 @@ tts: voice: "cmu-slt-hsmm" language: "en_US" effect: - Volume: "amount:2.0;", - TractScaler: "amount:1.5;", - F0Scale: "f0Scale:2.0;", - F0Add: "f0Add:50.0;", - Rate: "durScale:1.5;", - Robot: "amount:100.0;", - Whisper: "amount:100.0;", - Stadium: "amount:100.0", - Chorus: "delay1:466;amp1:0.54;delay2:600;amp2:-0.10;delay3:250;amp3:0.30", - FIRFilter: "type:3;fc1:500.0;fc2:2000.0", + Volume: "amount:2.0;" + TractScaler: "amount:1.5;" + F0Scale: "f0Scale:2.0;" + F0Add: "f0Add:50.0;" + Rate: "durScale:1.5;" + Robot: "amount:100.0;" + Whisper: "amount:100.0;" + Stadium: "amount:100.0" + Chorus: "delay1:466;amp1:0.54;delay2:600;amp2:-0.10;delay3:250;amp3:0.30" + FIRFilter: "type:3;fc1:500.0;fc2:2000.0" JetPilot: "" ``` diff --git a/source/_integrations/maxcube.markdown b/source/_integrations/maxcube.markdown index 0d0ada06c9d..64a7b875795 100644 --- a/source/_integrations/maxcube.markdown +++ b/source/_integrations/maxcube.markdown @@ -1,7 +1,6 @@ --- title: eQ-3 MAX! description: Instructions on how to integrate eQ-3 MAX! components with Home Assistant via eQ-3 MAX! Cube. -logo: maxcube.png ha_category: - Climate - Binary Sensor diff --git a/source/_integrations/media_player.markdown b/source/_integrations/media_player.markdown index f8a1b7d6da0..3c340bf711e 100644 --- a/source/_integrations/media_player.markdown +++ b/source/_integrations/media_player.markdown @@ -120,7 +120,7 @@ data: media_content_id: "https://fake-home-assistant.io.stream/aac" extra: thumb: "https://brands.home-assistant.io/_/homeassistant/logo.png" - title: HomeAssitantRadio + title: HomeAssistantRadio ``` #### Service `media_player.select_source` diff --git a/source/_integrations/microsoft.markdown b/source/_integrations/microsoft.markdown index a6ef468f3fb..203d8f5a8d1 100644 --- a/source/_integrations/microsoft.markdown +++ b/source/_integrations/microsoft.markdown @@ -71,11 +71,16 @@ region:
-Not all Azure regions support high-quality neural voices. Use [this overview](https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/regions#standard-and-neural-voices) to determine the availability of standard and neural voices by region/endpoint. +Not all Azure regions support high-quality neural voices. Use [this overview](https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/regions#neural-and-standard-voices) to determine the availability of standard and neural voices by region/endpoint.
- +
+ +If you set the language to anything other than the default `en-us`, you will need to specify a matching voice type as well. + +
+ ## Full configuration example A full configuration sample including optional variables: diff --git a/source/_integrations/modem_callerid.markdown b/source/_integrations/modem_callerid.markdown index 0eed0b031f5..a30584393f2 100644 --- a/source/_integrations/modem_callerid.markdown +++ b/source/_integrations/modem_callerid.markdown @@ -1,24 +1,29 @@ --- -title: Modem Caller ID +title: Phone Modem description: Instructions on how to integrate the Caller ID sensor into Home Assistant. ha_category: - Sensor ha_release: '0.40' ha_iot_class: Local Polling ha_domain: modem_callerid +ha_codeowners: + - '@tkdrob' +ha_platforms: + - sensor +ha_config_flow: true --- The `modem_callerid` integration uses an available modem for collecting caller ID information. It requires a Hayes AT compatible modem that supports caller ID detection (via AT+VCID=1). Usually any modem that uses a CX93001 will support this. When the sensor detects a new call, its state changes to 'ring' for each ring and 'callerid' when caller id information is received. It returns to 'idle' once ringing stops. The state event includes an attribute payload that includes the time of the call, name and number. -This integration also offers two services. `modem_callerid.reject_call` to pick up and then hang up the call to properly reject a call (via ATA anf ATH). `modem_callerid.hangup_call` to hang up an existing call (via ATH). +This integration also offers a service. `modem_callerid.reject_call` to pick up and then hang up the call to properly reject a call (via ATA anf ATH). {% include integrations/config_flow.md %} ## Examples -Some example automations: +An example automation: {% raw %} @@ -55,19 +60,3 @@ automation: ``` {% endraw %} - -## Extra instructions for the Home Assistant Core installation type - -To find the path of your USB modem, run: - -```bash -ls /dev/ttyACM* -``` - -If Home Assistant (`hass`) runs with another user (e.g., `homeassistant`) give access to the stick with: - -```bash -sudo usermod -a -G dialout homeassistant -``` - -Depending on what's plugged into your USB ports, the name found above may change. You can lock in a name, such as `/dev/modem`, by following [these instructions](http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/). diff --git a/source/_integrations/monoprice.markdown b/source/_integrations/monoprice.markdown index ec051c6ac13..f3608ac5b75 100644 --- a/source/_integrations/monoprice.markdown +++ b/source/_integrations/monoprice.markdown @@ -27,7 +27,7 @@ Sources can also be later edited from the integration options (gear icon in the ## Zone Management -Devices and entities are created for each of the possible 18 zones, and can be enabled, disabled and renamed through regular Home Assisant methods. +Devices and entities are created for each of the possible 18 zones, and can be enabled, disabled and renamed through regular Home Assistant methods. By default, the first 6 zones (11..16) are enabled, and there's an attempt to automatically detect the 12 extension zones (21..26, and 31..36) on the first run. ## Services diff --git a/source/_integrations/mullvad.markdown b/source/_integrations/mullvad.markdown index b6d2bf1ab86..19c751976c8 100644 --- a/source/_integrations/mullvad.markdown +++ b/source/_integrations/mullvad.markdown @@ -14,7 +14,7 @@ ha_platforms: - binary_sensor --- -The Mullvad VPN integration pulls [Mullvad](https://mullvad.net/) VPN status information into Home Assistant. +The Mullvad VPN integration uses the [Mullvad](https://mullvad.net/) VPN API to detect if your Home Assistant instance is connected to the Mullvad VPN service. ![](/images/screenshots/mullvad_vpn_sample_sensor_connected.png) diff --git a/source/_integrations/nest.markdown b/source/_integrations/nest.markdown index 38179bbf10e..d0cd603ad80 100644 --- a/source/_integrations/nest.markdown +++ b/source/_integrations/nest.markdown @@ -32,12 +32,10 @@ There is currently support for the following device types within Home Assistant: - [Sensor](#sensor)
-This integration supports two Nest APIs. The SDM API is the new primary API that accepts new users. The Legacy Works With Nest API is not accepting new users, but the documentation still exists at the bottom of the page so existing users can keep using it. +This integration supports two Nest APIs: The SDM API (new) accepts new users and requires a US$5 fee. The Legacy Works With Nest API (old) does not accept new users, but the documentation is still available at the bottom of the page for existing users.
-Google applies strict [Redirect URI validation -rules](https://developers.google.com/identity/protocols/oauth2/web-server#uri-validation) to keep your login -credentials secure. In practice, this means that you must access Home Assistant *over SSL* and a *public top-level domain* when setting up this integration. See the documentation on [Securing](/docs/configuration/securing/) or [Troubleshooting](#troubleshooting), and note that you don't actually need to enable remote access. +Google applies strict [Redirect URI validation rules](https://developers.google.com/identity/protocols/oauth2/web-server#uri-validation) to keep your login credentials secure. In practice, this means that you must access Home Assistant *over SSL* and a *public top-level domain* when setting up this integration. See the documentation on [Securing](/docs/configuration/securing/) or [Troubleshooting](#troubleshooting), and note that you don't actually need to enable remote access. ## Overview: Supported Devices @@ -64,7 +62,9 @@ The full detailed instructions for account setup are available in the [Device Ac For the first phase, you will turn on the API and create the necessary credentials to have Home Assistant talk to the Nest API. -1. First go to the [Device Access Registration](https://developers.google.com/nest/device-access/registration) page. Click on the button **Go to the Device Access Console**. +{% details "Create a Device Access Project [Device Access Console]" %} + +1. First go to the [Device Access Registration](https://developers.google.com/nest/device-access/registration) page. Click on the button **[Go to the Device Access Console](https://console.nest.google.com/device-access/)**. ![Screenshot of Device Access Registration](/images/integrations/nest/device_access.png) 1. Check the box to "Accept the Terms of Service" and click **Continue to Payment** where you need to pay a fee (currently US$5). @@ -80,7 +80,15 @@ For the first phase, you will turn on the API and create the necessary credentia 1. Give your Device Access project a name and click **Next**. ![Screenshot of naming a project](/images/integrations/nest/project_name.png) -1. Next you will be asked for an *OAuth client ID*. It is a good idea to go create that now. Open a new tab to the [Google API Console](https://console.developers.google.com/apis/credentials). +1. Next you will be asked for an *OAuth client ID*. It is a good idea to go create that now following instructions in the next section in a new browser tab. + +{% enddetails %} + +{% details "Configure OAuth client_id and client_secret [Cloud Console]" %} + +By the end of this section you will have the `client_id` and `client_secret`. + +1. Open a new tab to the [Google API Console](https://console.developers.google.com/apis/credentials). 1. If this is your first time here, you likely need to create a new Google API project. Click **Create Project** then **New Project**. Note: This is a different type of project from the Device Access project you are also creating. @@ -119,13 +127,24 @@ Project**. Note: This is a different type of project from the Device Access proj 1. You should now be presented with an *OAuth client created* message. Take note of *Your Client ID* and *Your Client Secret* as these are needed for Home Assistant set up. ![Screenshot of OAuth Client ID and Client Secret](/images/integrations/nest/oauth_created.png) -1. Now head back to the *Device Access Console* tab and *Add your OAuth client ID* then click **Next**. +{% enddetails %} + +{% details "Link Device Access project_id [Device Access Console]" %} + +By the end of this section you will have a `project_id` as well as the *Topic Name* needed to configure Cloud Pub/Sub. + +1. Now head back to the *[Device Access Console](https://console.nest.google.com/device-access/project-list)* tab and *Add your OAuth client ID* then click **Next**. ![Screenshot of Device Access Console OAuth client ID](/images/integrations/nest/device_access_oauth_client_id.png) 1. Enable Events by clicking on **Enable** and **Create project**. ![Screenshot of enabling events](/images/integrations/nest/enable_events.png) -1. Take note of the *Project ID* as you will need it later. At this point you have the `project_id`, `client_id` and `client_secret` configuration options needed for Home Assistant. +1. Take note of the *Project ID* as you will it later. At this point you have the `project_id`, `client_id` and `client_secret` configuration options needed for Home Assistant. +1. Also Take note of the *Pub/Sub Topic* which is later entered manually as the *Topic Name* when configuring Pub/Sub in a follow up step. + +{% enddetails %} + +{% details "Enable Device Access APIs [Cloud Console]" %} 1. Go back to the [Google Cloud Console: API & Services](https://console.developers.google.com/apis/dashboard) @@ -135,10 +154,20 @@ Project**. Note: This is a different type of project from the Device Access proj 1. Search for **Smart Device management** and enable the API. ![Screenshot of Search for SDM API](/images/integrations/nest/enable_sdm_api.png) +{% enddetails %} + ## Pub/Sub subscriber setup The next phase is to enable the Pub/Sub API by creating a subscription that can keep Home Assistant informed of events or device changes in near real-time. See [Device Access: Events](https://developers.google.com/nest/device-access/api/events) for the full detailed instructions. +{% details "Configure Cloud Pub/Sub subscriber_id [Cloud Console]" %} + +By the end of this section you will have the `subscriber_id` needed for configuration. + +What is Pub/Sub? You can think of your Nest device as the publisher and your Home Assistant as the subscriber. As your Nest device publishes events like a temperature change or motion event, it notifies your Home Assistant subscriber about +those events so it can record the new value or trigger an automation. + + 1. Visit [Enable the Cloud Pub/Sub API](https://console.developers.google.com/apis/library/pubsub.googleapis.com) in the Cloud Console and click **Enable**. 1. Go to the [Google Cloud Platform: Pub/Sub: Subscriptions](https://console.cloud.google.com/cloudpubsub/subscription/list) page and click **Create Subscription**. @@ -146,7 +175,9 @@ The next phase is to enable the Pub/Sub API by creating a subscription that can 1. You will need to pick a *Subscription ID*. ![Screenshot of creating a subscription](/images/integrations/nest/create_subscription.png) -1. The *Topic name* should match the topic name in your project in the [Device Access Console](https://console.nest.google.com/device-access/) and typically looks like `projects/sdm-prod/topics/EXAMPLE`. The SDM topic names do not show up by default so make sure to **Enter topic manually**. +1. Select **Enter Topic Manually** from the topic drop down list. +1. The *Topic name* comes from the [Device Access Console](https://console.nest.google.com/device-access/) *Topic name* +and typically looks like `projects/sdm-prod/topics/EXAMPLE`. ![Screenshot of creating a topic](/images/integrations/nest/device_access_pubsub_topic.png) 1. Select **Pull** as the *Delivery Type*. @@ -155,11 +186,15 @@ The next phase is to enable the Pub/Sub API by creating a subscription that can 1. Leave the rest of the defaults and click **Create**. -1. Once created, copy the *Subscription name* which you will want to hold on to as your `subscriber_id` for configuring Home Assistant. This typically looks like `projects/MY-CLOUD-ID/subscriptions/EXAMPLE`. Don't confuse *Subscription name* with *Topic name* since they look similar. +1. Once created, copy the *Subscription name* which you will want to hold on to as your `subscriber_id` for configuring Home Assistant. This typically looks like `projects/MY-CLOUD-ID/subscriptions/EXAMPLE`. +1. Don't confuse *Subscription name* with *Topic name* since they look similar. Remember that *Subscription name* is +your `subscriber_id`. + +{% enddetails %} ## Configuration -Congratulations, you now should have everything you need to configure Home Assistant. Edit your `configuration.yaml` file and populate a `nest` entry in the format of the example [Configuration](#configuration) below. +You now should have everything needed to configure Nest in Home Assistant. Edit your `configuration.yaml` file and populate a `nest` entry in the format of the example configuration below. ```yaml # Example configuration.yaml entry @@ -193,9 +228,25 @@ subscriber_id: ## Device Setup -Once your developer account is set up and you have a valid `nest` entry in `configuration.yaml`, you need to connect devices with the following steps: +Once `configuration.yaml` has a valid `nest` entry, you need to add Nest to your Home Assistant instance via the user interface by using this My button: -1. Using your externally accessible address from the Home Assistant front-end, navigate to **Configuration** then **Integrations**. Click **Add Integration** then locate 'Nest'. +{% my config_flow_start badge domain=page.ha_domain %} + +{% details "Manual configuration steps" %} + +1. Browse to your Home Assistant instance using. +1. In the sidebar click on _**{% my config icon %}**_. +1. From the configuration menu select: _**{% my integrations icon %}**_. +1. In the bottom right, click on the + _**{% my config_flow_start icon domain=page.ha_domain %}**_ button. +1. From the list, search and select _**"Nest"**_ and follow the instructions. + +{% enddetails %} + +The Nest integration setup will walk you through the steps of authorizing +your Home Assistant to access your account and Nest devices. + +{% details "OAuth and Device Authorization steps" %} 1. You should get redirected to Google to choose an account. This should be the same developer account you configured above. @@ -220,6 +271,7 @@ everything, however, you can leave out any feature you do not wish to use with H 1. If all went well, you are ready to go! ![Screenshot of success](/images/integrations/nest/finished.png) +{% enddetails %} ## Troubleshooting @@ -227,34 +279,56 @@ everything, however, you can leave out any feature you do not wish to use with H - Check **Configuration** then **Logs** to see if there are any error messages or misconfigurations then see the error messages below. -- *Reauthentication required often*: If you are frequently getting logged out, this means your authentication token was revoked by Google. This most likely reason is the *OAuth Consent Screen* is set to *Testing* by default which expires the token after 7 days. Follow the steps above to set it to *Production* to resolve this and reauthorize your integration one more time to get a new token. You may also see this as the error message *invalid_grant: Token has been expired or revoked*. See [Google Identity: Refresh token expiration](https://developers.google.com/identity/protocols/oauth2#expiration) for more reasons on why your token may have expired. +- *Reauthentication required often*: If you are frequently getting logged out, this means your authentication token was revoked by Google likely due to a misconfiguration. + +{% details "Details about reauthentication issues" %} + +- This most likely reason is the *OAuth Consent Screen* is set to *Testing* by default which expires the token after 7 days. +- Follow the steps above to set it to *Production* to resolve this and reauthorize your integration one more time to get a new token. +- You may also see this as the error message *invalid_grant: Token has been expired or revoked*. +- See [Google Identity: Refresh token expiration](https://developers.google.com/identity/protocols/oauth2#expiration) for more reasons on why your token may have expired. + +{% enddetails %} - *Thermostat does not appear or is unavailable* happens due to a bug where the SDM API does return the devices. A common fix get the API to work again is to: - - Restart the Thermostat device. See [How to restart or reset a Nest thermostat](https://support.google.com/googlenest/answer/9247296) for more details. - - In the official Nest app or on https://home.nest.com: Move the Thermostat to a different or fake/temporary room. - - Reload the integration in Home Assistant: Navigate to **Configuration** then **Integrations**, click `...` next to *Nest* and choose **Reload**. + +{% details "How to restart thermostat" %} + +- Restart the Thermostat device. See [How to restart or reset a Nest thermostat](https://support.google.com/googlenest/answer/9247296) for more details. +- In the official Nest app or on https://home.nest.com: Move the Thermostat to a different or fake/temporary room. +- Reload the integration in Home Assistant: Navigate to **Configuration** then **Integrations**, click `...` next to *Nest* and choose **Reload**. + +{% enddetails %} - *No devices or entities are created* if the SDM API is not returning any devices for the authorized account. Double-check that GCP is configured correctly to [Enable the API](https://developers.google.com/nest/device-access/get-started#set_up_google_cloud_platform) and authorize at least one device in the OAuth setup flow. If you have trouble here, then you may want to walk through the Google instructions and issue commands directly against the API until you successfully get back the devices. - *Error 400: redirect_uri_mismatch* means that your OAuth Client ID is not configured to match your Home Assistant URL. - - To resolve this, copy and paste the redirect URI in the error message (`https://:/auth/external/callback`). +{% details "Details about resolving redirect_uri_mismatch" %} - ![Screenshot of success](/images/integrations/nest/redirect_uri_mismatch.png) +- To resolve this, copy and paste the redirect URI in the error message (`https://:/auth/external/callback`). - - Go back to the [API Console](https://console.developers.google.com/apis/credentials) and select your *OAuth 2.0 Client ID*. - - Add the URL to the list of *Authorized redirect URIs* and click **Save** and start the flow over. + ![Screenshot of success](/images/integrations/nest/redirect_uri_mismatch.png) - ![Screenshot of success](/images/integrations/nest/redirect_uris_fix.png) +- Go back to the [API Console](https://console.developers.google.com/apis/credentials) and select your *OAuth 2.0 Client ID*. +- Add the URL to the list of *Authorized redirect URIs* and click **Save** and start the flow over. + + ![Screenshot of success](/images/integrations/nest/redirect_uris_fix.png) + +{% enddetails %} - When configuring the OAuth Client ID redirect URI, you may see an error such as *must end with a public top-level domain (such as .com or .org)* or *must use a valid domain that is a valid top private domain*. This means that you may need to change the URL you use to access Home Assistant in order to access your devices. - - See [Securing](https://www.home-assistant.io/docs/configuration/securing/) Home Assistant for convient solutions e.g. [Nabu Casa](https://www.nabucasa.com/) or Duck DNS. - - There are subtle [rules](https://developers.google.com/identity/protocols/oauth2/web-server#uri-validation) for what types of URLs are allowed, namely that they must use SSL and a publicly known hostname, though your Home Assistant ports do not need to be exposed to the internet. - - You can use any publicly known hostname you own - - As a hack, you can use hosts tricks to temporarily assign a public hostname to your Home Assistant IP address. +{% details "Details about URL configuration" %} + +- See [Securing](https://www.home-assistant.io/docs/configuration/securing/) Home Assistant for convenient solutions e.g. [Nabu Casa](https://www.nabucasa.com/) or Duck DNS. +- There are subtle [rules](https://developers.google.com/identity/protocols/oauth2/web-server#uri-validation) for what types of URLs are allowed, namely that they must use SSL and a publicly known hostname, though your Home Assistant ports do not need to be exposed to the internet. +- You can use any publicly known hostname you own +- As a hack, you can use hosts tricks to temporarily assign a public hostname to your Home Assistant IP address. + +{% enddetails %} - *Error 403: access_denied* means that you need to visit the [OAuth Consent Screen](https://console.developers.google.com/apis/credentials/consent) and add your Google Account as a *Test User*. @@ -264,9 +338,9 @@ everything, however, you can leave out any feature you do not wish to use with H - *Subscriber error: Subscription misconfigured. Expected topic name to match ...* means that the topic name in the Google Cloud Console was entered incorrectly. The topic name comes from the Device Console and must start with `projects/sdm-prod/topics/`. It is easy to make the mistake of creating a new topic rather than manually entering the right topic name. -- *Not receiving updates* typically means a problem with the subscriber configuration. Changes for things like sensors or thermostat temperature set points should be instantly published to a topic and received by the Home Assistant susbcriber when everything is configured correctly. +- *Not receiving updates* typically means a problem with the subscriber configuration. Changes for things like sensors or thermostat temperature set points should be instantly published to a topic and received by the Home Assistant subscriber when everything is configured correctly. -- You can see stats about your subscriber in the [Cloud Console](https://console.cloud.google.com/cloudpubsub/subscription/list) which includes counts of messages published by your devices, and how many have been acknowledged by your Home Assistant subscriber. You can also `View Messages` to see examples of published. Many old unacknowledged messages indicate the subscriber is not receivng the messages and working properly or not connected at all. Double check the `subscriber_id` matches the `Subscription Name` +- You can see stats about your subscriber in the [Cloud Console](https://console.cloud.google.com/cloudpubsub/subscription/list) which includes counts of messages published by your devices, and how many have been acknowledged by your Home Assistant subscriber. You can also `View Messages` to see examples of published. Many old unacknowledged messages indicate the subscriber is not receiving the messages and working properly or not connected at all. Double check the `subscriber_id` matches the `Subscription Name` - To aid in diagnosing subscriber problems or camera stream issues it may help to turn up verbose logging by adding some or all of these to your `configuration.yaml` depending on where you are having trouble: @@ -322,7 +396,7 @@ All Google Nest Cam models and the Google Nest Hello Video Doorbell support devi - **Motion detected** - **Person detected** - **Sound detected** -- **Doorbell pressed** *for Google Nest Hello Video Doorbell only* +- **Doorbell pressed** *for Doorbell only* The lower level Pub/Sub subscriber receives events in real time and internally fires `nest_event` events within Home Assistant: @@ -333,7 +407,7 @@ The lower level Pub/Sub subscriber receives events in real time and internally f | Sound detected | [CameraSound](https://developers.google.com/nest/device-access/traits/device/camera-sound#events) | `sound_detected` | | Doorbell pressed | [DoorbellChime](https://developers.google.com/nest/device-access/traits/device/doorbell-chime#events) | `doorbell_chime` | -### Example +## Example This automation will trigger when a `nest_event` event type with a type of `camera_motion` is received from the specified `device_id`. @@ -364,8 +438,7 @@ This section contains instructions for the Legacy [Works with Nest](https://deve New users are not currently able to set up a Works With Nest Developer account. The documentation is preserved here for existing users of the API.
-
-Click here to expand documentation for the Legacy Works with Nest API +{% details "Legacy Works with Nest Configuration Steps" %} The Nest integration is the main integration to integrate all [Nest](https://nest.com/) related platforms. To connect Nest, you will have to [sign up for a developer account](https://developers.nest.com/products) and get a `client_id` and `client_secret`. @@ -377,7 +450,7 @@ There is currently support for the following device types within Home Assistant: - [Climate](#climate) - [Sensor](#sensor) -### Setting up developer account +**Setting up developer account** 1. Visit [Nest Developers](https://developers.nest.com/), and sign in. Create an account if you don't have one already. @@ -399,7 +472,7 @@ There is currently support for the following device types within Home Assistant: Connecting to the Nest Developer API requires outbound port 9553 on your firewall. The configuration will fail if this is not accessible. -## Configuration +**Configuration** ```yaml # Example configuration.yaml entry @@ -433,7 +506,7 @@ structure: type: list {% endconfiguration %} -### Service `set_away_mode` +**Service `set_away_mode`** You can use the service `nest/set_away_mode` to set the structure(s) to "Home" or "Away". @@ -466,7 +539,7 @@ script: - Apartment ``` -### Service `set_eta` +**Service `set_eta`** You can use the service `nest/set_eta` to set or update the estimated time of arrival window. Calling this service will automatically set the structure(s) to "Away". Structures must have an associated Nest thermostat in order to use ETA function. @@ -504,7 +577,7 @@ script: - Apartment ``` -### Service `cancel_eta` +**Service `cancel_eta`** You can use the service `nest/cancel_eta` to cancel an existing estimated time of arrival window. Structures must have an associated Nest thermostat in order to use ETA function. @@ -537,13 +610,13 @@ script: - Apartment ``` -### Troubleshooting +**Troubleshooting** - For trouble with the SDM API OAuth authorization flow with Google, see [Troubleshooting](https://developers.google.com/nest/device-access/authorize#troubleshooting) which includes guidance for errors like `redirect_uri_mismatch` where Google needs to know about your external URL. - If you're getting [rickrolled](https://www.youtube.com/watch?v=dQw4w9WgXcQ) by the Legacy API instead of being able to see your Nest cameras, you may not have set up your developer account's permissions correctly. Go back through and make sure you've selected read/write under every category that it's an option. -## Platforms +**Platforms**
@@ -551,7 +624,7 @@ You must have the [Nest component](/integrations/nest/) configured to use the pl
-### Binary Sensor +**Binary Sensor** The `nest` binary sensor platform lets you monitor various states of your [Nest](https://nest.com) devices. @@ -561,7 +634,7 @@ You must have the [Nest component](/integrations/nest/) configured to use these
-#### Configuration +**Configuration** To enable binary sensors and customize which sensors are setup, you can extend the [Nest component](/integrations/nest/) configuration in your `configuration.yaml` file with the following settings: @@ -601,7 +674,7 @@ The following conditions are available by device: - person\_detected - sound\_detected -### Camera +**Camera** The `nest` platform allows you to watch still frames from a video stream (not live stream) of your [Nest](https://nest.com/camera/meet-nest-cam/) camera in Home Assistant. @@ -613,7 +686,7 @@ The Legacy API integration allows you to watch still frames from a video stream Nest Camera supports the `camera.turn_on` and `camera.turn_off` services since the 0.75 release. -### Climate +**Climate** The `nest` climate platform lets you control a thermostat from [Nest](https://nest.com). @@ -625,7 +698,7 @@ Please note due to limitations with the European Nest Thermostat E, integration

-### Sensor +**Sensor** The `nest` sensor platform lets you monitor sensors connected to your [Nest](https://nest.com) devices. @@ -635,7 +708,7 @@ The sensors will be setup if the `nest` integration is configured and the requir -#### Configuration +**Configuration** To enable sensors and customize which sensors are setup, you can extend the [Nest component](/integrations/nest/) configuration in your `configuration.yaml` file with the following settings: @@ -675,7 +748,7 @@ The following conditions are available by device: - `color_status`: `gray`, `green`, `yellow` or `red`. Indicates device status by color in the Nest app UI. It is an aggregate condition for battery+smoke+CO states, and reflects the actual color indicators displayed in the Nest app. - Nest Camera: none -### Security State +**Security State**
@@ -701,4 +774,4 @@ A `deter` state is re-evaluated after several minutes and relaxed to `ok` if no The `security_state` automatically switches to `ok` when the structure state is `home`. - +{% enddetails %} diff --git a/source/_integrations/netgear.markdown b/source/_integrations/netgear.markdown index f6e0060f7b9..7e89df118e9 100644 --- a/source/_integrations/netgear.markdown +++ b/source/_integrations/netgear.markdown @@ -8,7 +8,13 @@ ha_release: pre 0.7 ha_domain: netgear ha_platforms: - device_tracker + - sensor ha_config_flow: true +ha_codeowners: + - '@hacf-fr' + - '@Quentame' + - '@starkillerOG' +ha_ssdp: true --- This platform allows you to detect presence by looking at connected devices to a [NETGEAR](https://www.netgear.com/) device. diff --git a/source/_integrations/number.mqtt.markdown b/source/_integrations/number.mqtt.markdown index 059288c739b..9e1e2575e27 100644 --- a/source/_integrations/number.mqtt.markdown +++ b/source/_integrations/number.mqtt.markdown @@ -8,7 +8,7 @@ ha_iot_class: Configurable ha_domain: mqtt --- -The `mqtt` Number platform allows you to integrate devices that might expose configuration options through MQTT into Home Assistant as a Number. Every time a message under the `topic` in the configuration is received, the number entity will be updated in Home Assisant and vice-versa, keeping the device and Home Assistant in-sync. +The `mqtt` Number platform allows you to integrate devices that might expose configuration options through MQTT into Home Assistant as a Number. Every time a message under the `topic` in the configuration is received, the number entity will be updated in Home Assistant and vice-versa, keeping the device and Home Assistant in-sync. ## Configuration diff --git a/source/_integrations/onvif.markdown b/source/_integrations/onvif.markdown index 7168d78b647..63b52c46d2d 100644 --- a/source/_integrations/onvif.markdown +++ b/source/_integrations/onvif.markdown @@ -24,7 +24,7 @@ The `onvif` camera platform allows you to use an [ONVIF](https://www.onvif.org/)
-If running Home Asssistant Core in a venv, ensure that libxml2 and libxslt python interfaces are installed via your package manager. +If running Home assistant Core in a venv, ensure that libxml2 and libxslt python interfaces are installed via your package manager.
### Configuration Notes diff --git a/source/_integrations/opengarage.markdown b/source/_integrations/opengarage.markdown index 2f0a9d8ac56..dad99333066 100644 --- a/source/_integrations/opengarage.markdown +++ b/source/_integrations/opengarage.markdown @@ -18,4 +18,3 @@ The `opengarage` cover platform lets you control the open-source [OpenGarage.io] {% include integrations/config_flow.md %} - diff --git a/source/_integrations/qbittorrent.markdown b/source/_integrations/qbittorrent.markdown index 2db5c8a28c3..0c16cb41849 100644 --- a/source/_integrations/qbittorrent.markdown +++ b/source/_integrations/qbittorrent.markdown @@ -49,3 +49,11 @@ password: required: true type: string {% endconfiguration %} + +## Sensors + +The qBittorrent integration will add the following sensors: + +- `sensor.qbittorrent_status`: The status of qBittorrent - `up_down`, `seeding`, `downloading` or `idle`. +- `sensor.qbittorrent_up_speed`: The current total upload speed in kB/s. +- `sensor.qbittorrent_down_speed`: The current total download speed in kB/s. diff --git a/source/_integrations/recorder.markdown b/source/_integrations/recorder.markdown index 7e39856c2c2..0eff8d6d93f 100644 --- a/source/_integrations/recorder.markdown +++ b/source/_integrations/recorder.markdown @@ -9,7 +9,7 @@ ha_domain: recorder ha_iot_class: Local Push --- -The `recorder` integration is responsible for storing details in a database, which then are handled by the [`history` ](/integrations/history/) integration. +The `recorder` integration is responsible for storing details in a database, which then are handled by the [`history`](/integrations/history/) integration.
@@ -232,7 +232,7 @@ The following database engines are tested when major changes are made to the rec - SQLite 3.32.1+ - MariaDB 10.3+ - MySQL 5.7+ -- PostgresSQL 12+ +- PostgreSQL 12+ ## Custom database engines @@ -246,12 +246,18 @@ SQLite: MariaDB (omit pymysql): description: > `mysql://user:password@SERVER_IP/DB_NAME?charset=utf8mb4` +MariaDB (omit pymysql, using TLS encryption): + description: > + `mysql://user:password@SERVER_IP/DB_NAME?charset=utf8mb4;ssl=true` MariaDB (omit pymysql, Socket): description: > `mysql://user:password@SERVER_IP/DB_NAME?unix_socket=/var/run/mysqld/mysqld.sock&charset=utf8mb4` MySQL: description: > `mysql://user:password@SERVER_IP/DB_NAME?charset=utf8mb4` +MySQL (using TLS encryption): + description: > + `mysql://user:password@SERVER_IP/DB_NAME?charset=utf8mb4;ssl=true` MySQL (Socket): description: > `mysql://user:password@localhost/DB_NAME?unix_socket=/var/run/mysqld/mysqld.sock&charset=utf8mb4` @@ -340,6 +346,7 @@ Not all Python bindings for the chosen database engine can be installed directly ### MariaDB and MySQL +Make sure the default character set of your database server is set to `utf8mb4` (see [MariaDB documentation](https://mariadb.com/kb/en/setting-character-sets-and-collations/#example-changing-the-default-character-set-to-utf-8)). If you are in a virtual environment, don't forget to activate it before installing the `mysqlclient` Python package described below. ```bash diff --git a/source/_integrations/renault.markdown b/source/_integrations/renault.markdown index 99a16670d5d..483a048ae0f 100644 --- a/source/_integrations/renault.markdown +++ b/source/_integrations/renault.markdown @@ -16,8 +16,8 @@ ha_domain: renault ha_platforms: - binary_sensor - device_tracker - - select - sensor + - select --- The Renault integration offers integration with the **MyRenault** cloud service and provides sensors such as charger state and temperature. @@ -98,4 +98,3 @@ Start charge on vehicle. | Service data attribute | Required | Description | | ---------------------- | -------- | ----------- | | `vehicle`| yes | device_id of the vehicle | - diff --git a/source/_integrations/rflink.markdown b/source/_integrations/rflink.markdown index 22823135a2f..1837107611f 100644 --- a/source/_integrations/rflink.markdown +++ b/source/_integrations/rflink.markdown @@ -91,7 +91,7 @@ TCP mode allows you to connect to an RFLink device over a TCP/IP network. This i To expose the USB/serial interface over TCP on a different host (Linux) the following command can be used: ```bash -socat /dev/ttyACM0,b57600 TCP-LISTEN:1234,reuseaddr +socat /dev/ttyACM0,b57600,rawer TCP-LISTEN:1234,reuseaddr ``` Other methods of exposing the serial interface over TCP are possible (eg: ESP8266 or using Arduino Wifi shield). Essentially the serial stream should be directly mapped to the TCP stream. diff --git a/source/_integrations/satel_integra.markdown b/source/_integrations/satel_integra.markdown index 5e43e9075cc..886858778a3 100644 --- a/source/_integrations/satel_integra.markdown +++ b/source/_integrations/satel_integra.markdown @@ -21,7 +21,7 @@ There is currently support for the following device types within Home Assistant: - Binary Sensor: Reports on zone or output statuses - Switch: allows for setting states of selected outputs -- Alarm Control Panel: represents the partition (in Polish: "strefa"). Reports its status, and can be used to arm/disarm the partition +- Alarm Control Panel: represents the zones (in Polish: "strefa"). Reports its status, and can be used to arm/disarm the partition The module communicates via Satel's open TCP protocol published on their website. It subscribes for new events coming from alarm system and reacts to them immediately. diff --git a/source/_integrations/scrape.markdown b/source/_integrations/scrape.markdown index 76ecb1e2eff..27d85fa9ead 100644 --- a/source/_integrations/scrape.markdown +++ b/source/_integrations/scrape.markdown @@ -173,8 +173,9 @@ sensor: - platform: scrape resource: https://elen.nu/timpriser-pa-el-for-elomrade-se3-stockholm/ name: Electricity price - select: ".elspot-content" - value_template: '{{ ((value.split(" ")[0]) | replace (",", ".")) }}' + select: ".text-lg:is(span)" + index: 1 + value_template: '{{ value | replace (",", ".") | float }}' unit_of_measurement: "öre/kWh" ``` diff --git a/source/_integrations/seventeentrack.markdown b/source/_integrations/seventeentrack.markdown index d2f0e6913a6..0bbf6aaac74 100644 --- a/source/_integrations/seventeentrack.markdown +++ b/source/_integrations/seventeentrack.markdown @@ -14,7 +14,7 @@ The `seventeentrack` sensor platform allows users to get package data tied to th
-Although the 17track.net website states that account passwords cannot be longer than 16 characters, users can technically set long-than-16-character passwords. These passwords **will not** work with the used API. Therefore, please ensure that your 17track.net password does not exceed 16 characters. +Although the 17track.net website states that account passwords cannot be longer than 16 characters, users can technically set longer-than-16-character passwords. These passwords **will not** work with the used API. Therefore, please ensure that your 17track.net password does not exceed 16 characters.
@@ -55,7 +55,7 @@ show_delivered: ### Lovelace summary card -Use the following templated Markdown card to list all packages in transit along their status: +Use the following templated Markdown card to list all packages in transit along with their status: {% raw %} diff --git a/source/_integrations/sma.markdown b/source/_integrations/sma.markdown index 2051184b10a..9444ff6bb4f 100644 --- a/source/_integrations/sma.markdown +++ b/source/_integrations/sma.markdown @@ -22,7 +22,7 @@ The integration uses the web interface of the device. Before you start, make sur ## Sensors -The SMA WebConnect module supports a wide variety of sensors, but not all of these have been mapped in the `pysma` library. Currently available sensors can be found below. Feel free to submit additional sensors to be added as standard sensors to the [pysma library](https://github.com/rklomp/pysma/blob/dev/pysma/definitions.py). +The SMA WebConnect module supports a wide variety of sensors, but not all of these have been mapped in the `pysma` library. Currently available sensors can be found below. Feel free to submit additional sensors to be added as standard sensors to the [pysma library](https://github.com/rklomp/pysma/blob/master/pysma/definitions.py). ### Solar Inverter diff --git a/source/_integrations/smartthings.markdown b/source/_integrations/smartthings.markdown index 69873a3e079..d41997645fe 100644 --- a/source/_integrations/smartthings.markdown +++ b/source/_integrations/smartthings.markdown @@ -63,7 +63,7 @@ The PAT is used to create a Home Assistant SmartApp in your SmartThings account This integration requires an internet accessible incoming webhook to receive push updates from SmartThings. The preferred approach is to subscribe to [Home Assistant Cloud (Nabu Casa)](https://www.nabucasa.com/) and the integration will configure and use a cloudhook automatically. Alternatively, you will have to configure and setup an internet accessible webhook in Home Assistant as described below: 1. Setup [remote access](/docs/configuration/remote/) via a domain name secured with SSL. *Self-signed SSL certificates are not supported by the SmartThings Cloud API.* -1. Set the external URL in the Home Assistant [configuration](/docs/configuration/basic) to the URL that Home Assistant is available on the internet (this must start with `https://`). +1. Set the external URL in the Home Assistant [configuration](/docs/configuration/basic) to the URL that Home Assistant is available on the internet (this must start with `https://`). This must be port 443. If you do not use Nabu Casa you must configure your network to allow TCP traffic from the internet on port 443 to reach the IP address of the device running Home Assistant. ## Setup instructions diff --git a/source/_integrations/solaredge.markdown b/source/_integrations/solaredge.markdown index d3597d51845..8b0ea95a485 100644 --- a/source/_integrations/solaredge.markdown +++ b/source/_integrations/solaredge.markdown @@ -3,6 +3,7 @@ title: SolarEdge description: Instructions on how to integrate SolarEdge sensor within Home Assistant. ha_category: - Sensor + - Energy ha_release: 0.85 ha_iot_class: Cloud Polling ha_config_flow: true diff --git a/source/_integrations/surepetcare.markdown b/source/_integrations/surepetcare.markdown index 51ebbc9b661..2864e8003a6 100644 --- a/source/_integrations/surepetcare.markdown +++ b/source/_integrations/surepetcare.markdown @@ -14,8 +14,8 @@ ha_domain: surepetcare ha_config_flow: true ha_platforms: - binary_sensor - - sensor - lock + - sensor --- The `surepetcare` component allows you to get information on your Sure Petcare Connect Pet or Cat Flap. diff --git a/source/_integrations/switchbot.markdown b/source/_integrations/switchbot.markdown index 498695669bc..52066f45b7c 100644 --- a/source/_integrations/switchbot.markdown +++ b/source/_integrations/switchbot.markdown @@ -1,6 +1,6 @@ --- title: SwitchBot -description: Instructions on how to set up SwitchBot switches. +description: Instructions on how to set up SwitchBot Devices. ha_category: - Cover - Switch @@ -11,12 +11,28 @@ ha_codeowners: - '@RenierM26' ha_domain: switchbot ha_platforms: + - binary_sensor - cover + - sensor - switch +ha_config_flow: true --- The SwitchBot integration allows you to control SwitchBot [devices](https://www.switch-bot.com/). +## Prerequisites + +In order to use this integration, it is required to have working Bluetooth set up on the device running Home Assistant. A [SwitchBot Hub](https://www.switch-bot.com/search?type=product&q=hub) is not required for this integration. + +In order to set up this integration, you need to get the BTLE MAC address of your device. You can find the address for your device using the following steps: + +1. Open the SwitchBot app. +2. Open device settings. +3. Click on "Device Info". +4. Write down the BLTE MAC address of your device. + +Please note, device names configured in the SwitchBot app are not transferred into Home Assistant. + {% include integrations/config_flow.md %} ## SwitchBot Entity @@ -26,3 +42,12 @@ There are three attributes available on the SwitchBot entity to give you more in - `last_run_success`: If `true` if the last action sent to the SwitchBot succeeded. This attribute is useful for error trapping when Bluetooth connectivity is intermittent. If `false`, see home-assistant.log for specific error messages. - `Switch mode`: Specifies the mode of the SwitchBot. If `true` the the SwitchBot is in Pull/Retract mode for toggle switches otherwise the bot is in momentary switch mode. - `MAC address`: The BTLE MAC for the device. + +### Error codes and troubleshooting + +{% configuration_basic %} +"Config flow could not be loaded": + description: Possible custom integration conflict, using a different version of PySwitchbot; Try uninstalling the custom integration. +"No unconfigured devices found": + description: Make sure your devices are powered on and are in range. +{% endconfiguration_basic %} diff --git a/source/_integrations/system_health.markdown b/source/_integrations/system_health.markdown index 2de5fc1cae6..d71bd8879b8 100644 --- a/source/_integrations/system_health.markdown +++ b/source/_integrations/system_health.markdown @@ -19,4 +19,4 @@ system_health: System Health integration data can be viewed at **Configuration** -> **Info**. -Data includes information about your system architecture, operating system and version, Home Assistant installation type and version, Python version, frontend version, the number of [Lovelace Dashboards and Views](/lovelace/dashboards-and-views/) you have, and more. +Data includes information about your system architecture, operating system and version, Home Assistant installation type and version, Python version, frontend version, the number of Lovelace [Dashboards](/lovelace/dashboards/) and [Views](/lovelace/views/) you have, and more. diff --git a/source/_integrations/tautulli.markdown b/source/_integrations/tautulli.markdown index 495c2737f77..dd287756d47 100644 --- a/source/_integrations/tautulli.markdown +++ b/source/_integrations/tautulli.markdown @@ -71,7 +71,7 @@ monitored_users: required: false type: list monitored_conditions: - description: A list of attributes to expose for each Tautulli user you monitor, every key in the `session` [section here][tautulliapi] can be used. + description: A list of attributes to expose for each Tautulli user you monitor, every key in the `session` [section here](https://github.com/Tautulli/Tautulli/wiki/Tautulli-API-Reference#get_activity) can be used. required: false type: list {% endconfiguration %} @@ -93,4 +93,3 @@ sensor: ``` [tautulli]: https://tautulli.com -[tautulliapi]: https://github.com/Tautulli/Tautulli/wiki/Tautulli-API-Reference#get_activity diff --git a/source/_integrations/telegram.markdown b/source/_integrations/telegram.markdown index fd1d2a104ed..cef6b4e2e4d 100644 --- a/source/_integrations/telegram.markdown +++ b/source/_integrations/telegram.markdown @@ -22,7 +22,7 @@ The requirements are: **Method 1:** You can get your `chat_id` by sending any message to the [GetIDs bot](https://t.me/getidsbot). -**Method 2:** To retrieve your `chat_id` you can visit `https://api.telegram.org/botYOUR_API_TOKEN/getUpdates` or to use `$ curl -X GET https://api.telegram.org/botYOUR_API_TOKEN/getUpdates` **after** you have sent the bot a message. Replace `YOUR_API_TOKEN` with your actual token. +**Method 2:** To retrieve your `chat_id` you can visit `https://api.telegram.org/bot/getUpdates` or to use `$ curl -X GET https://api.telegram.org/bot/getUpdates` **after** you have sent the bot a message. Replace `` with your actual token. The result set will include your chat ID as `id` in the `chat` section: diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown index 10356149d4b..40e1c2f53a3 100644 --- a/source/_integrations/template.markdown +++ b/source/_integrations/template.markdown @@ -8,9 +8,9 @@ ha_release: 0.12 ha_iot_class: Local Push ha_quality_scale: internal ha_codeowners: - - '@home-assistant/core' - '@PhracturedBlue' - '@tetienne' + - '@home-assistant/core' ha_domain: template ha_platforms: - alarm_control_panel @@ -20,7 +20,6 @@ ha_platforms: - light - lock - number - - select - sensor - select - switch @@ -62,7 +61,7 @@ template: {% set bedroom = states('sensor.bedroom_temperature') | float %} {% set kitchen = states('sensor.kitchen_temperature') | float %} - {{ ((bedroom + kitchen) / 2) | round(1) }} + {{ ((bedroom + kitchen) / 2) | round(1, default=0) }} ``` {% endraw %} @@ -87,8 +86,8 @@ template: minutes: 0 sensor: # Keep track how many days have past since a date - - name: Not smoking - state: '{{ ( ( as_timestamp(now()) - as_timestamp(strptime("06.07.2018", "%d.%m.%Y")) ) / 86400 ) | round }}' + - name: "Not smoking" + state: '{{ ( ( as_timestamp(now()) - as_timestamp(strptime("06.07.2018", "%d.%m.%Y")) ) / 86400 ) | round(default=0) }}' unit_of_measurement: "Days" ``` diff --git a/source/_integrations/todoist.markdown b/source/_integrations/todoist.markdown index 7c619067b54..2ed6c8cc104 100644 --- a/source/_integrations/todoist.markdown +++ b/source/_integrations/todoist.markdown @@ -16,7 +16,7 @@ This platform allows you to connect to your [Todoist Projects](https://todoist.c ### Prerequisites -You need to determine your Todoist API token. This is fairly simple to do; just go [to the Integrations section on your Todoist settings page](https://todoist.com/Users/viewPrefs?page=authorizations) and find the section labeled "API token" at the bottom of the page. Copy that token and use it in your configuration file. +You need to determine your Todoist API token. This is fairly simple to do; just go [to the Integrations section on your Todoist settings page](https://todoist.com/app/settings/integrations) and find the section labeled "API token" at the bottom of the page. Copy that token and use it in your configuration file. ### Basic Setup diff --git a/source/_integrations/totalconnect.markdown b/source/_integrations/totalconnect.markdown index c5396d8b9c3..45dd9ad2334 100644 --- a/source/_integrations/totalconnect.markdown +++ b/source/_integrations/totalconnect.markdown @@ -17,16 +17,14 @@ ha_platforms: The `totalconnect` integration provides connectivity with TotalConnect alarm systems used by many alarm companies. +## Prerequisites + +Log in to the [TotalConnect website](https://totalconnect2.com) and create a "standard" Total Connect user account specifically for use with Home Assistant. It should not have full administrative privileges. + +Give the user access to your Location. Give the user a usercode, usually a 4 digit number. + {% include integrations/config_flow.md %} -To find your TotalConnect location number: - - - Use a web browser to log in to the TotalConnect website as the administrator. - - Click on your location. - - The URL shows the location number after "mylocation/" like this `https://totalconnect2.com/home/mylocation/123456`. - -You are highly encouraged to create a Total Connect user account specifically for Home Assistant. It should not have full administrative privileges. - ## Automation example ```yaml diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown index 2c09ed09082..442d200aae3 100644 --- a/source/_integrations/tplink.markdown +++ b/source/_integrations/tplink.markdown @@ -18,9 +18,11 @@ ha_platforms: - sensor - switch ha_dhcp: true +ha_quality_scale: platinum --- -The `tplink` integration allows you to control your [TP-Link Smart Home Devices](https://www.tp-link.com/kasa-smart/) such as smart plugs and smart bulbs. +The `tplink` integration allows you to control your [TP-Link Smart Home Devices](https://www.tp-link.com/kasa-smart/) such as plugs, power strips, wall switches and bulbs. +In some instances it might be required to add the plug to the Kasa app before trying to add them to Home Assistant, if you cannot see your newly purchased device via the integration, please add it to the Kasa app first (do not upgrade the firmware if it presents the option). There is currently support for the following device types within Home Assistant: @@ -31,10 +33,6 @@ There is currently support for the following device types within Home Assistant: {% include integrations/config_flow.md %} ## Supported Devices - -This integration supports devices that are controllable with the [KASA app](https://www.tp-link.com/us/kasa-smart/kasa.html). -The following devices are known to work with this component. - ### Plugs - HS100 diff --git a/source/_integrations/tplink_lte.markdown b/source/_integrations/tplink_lte.markdown index e4a2c7b8eb5..1c575a67bb1 100644 --- a/source/_integrations/tplink_lte.markdown +++ b/source/_integrations/tplink_lte.markdown @@ -11,7 +11,7 @@ ha_platforms: - notify --- -The TP-Link LTE integration for Home Assistant allows you to observe and control TP-Link LTE routers, currently only tested with TL-MR6400 (firmware 1.4.0). +The TP-Link LTE integration for Home Assistant makes it possible to send SMS's from the TP-Link LTE router. Phone numbers have to be pre-defined as part of the YAML configuration, and each phone number will turn up as additional notify service in Home Assistant. The integration adds a new notify service for each adds a notification service to Home Assistant that can be used to send SMSs provides a notification service that will send an SMS. Tested only with TL-MR6400 v4. The integration provides a notification service that will send an SMS. @@ -45,7 +45,7 @@ notify: required: false type: list keys: - target: + recipient: description: The phone number of a default recipient or a list with multiple recipients. required: true type: [string, list] diff --git a/source/_integrations/tradfri.markdown b/source/_integrations/tradfri.markdown index 841202fdd41..561426e7317 100644 --- a/source/_integrations/tradfri.markdown +++ b/source/_integrations/tradfri.markdown @@ -79,4 +79,5 @@ Do not use the `api_key` variable in `configuration.yaml`. The API key is only n ## Known limitations -- The TRÅDFRI Shortcut button sends no events to Home Assistant so it cannot be used to automate with; it does report battery status. +- The TRÅDFRI Shortcut button, Remotes and motion sensor only send information about their battery status, no events, to Home Assistant and thus can't be used to automate with. If you want to automate with these devices, you need to use something like [ZHA](/integrations/zha/). + diff --git a/source/_integrations/tuya.markdown b/source/_integrations/tuya.markdown index 47451a73300..7363406aad5 100644 --- a/source/_integrations/tuya.markdown +++ b/source/_integrations/tuya.markdown @@ -7,12 +7,14 @@ ha_category: - Light - Scene - Switch -ha_iot_class: Cloud Polling +ha_iot_class: Cloud Push ha_release: 0.74 ha_config_flow: true ha_domain: tuya ha_codeowners: + - '@Tuya' - '@zlinoliver' + - '@METISU' ha_platforms: - climate - fan @@ -47,7 +49,7 @@ This is a separate account to the one you made for the app. You cannot log in wi 4. In the `Create Project` dialog box, configure `Project Name`, `Description`, `Industry`, and `Data Center`. For the `Development Method` field, select `Smart Home` from the dropdown list. For the `Data Center` field, select the zone you are located in. ![](/images/integrations/tuya/image_001.png) 5. Click `Create` to continue with project configuration. -6. In Configuration Wizard, select the `Device Status Notification` API. `Smart Home` API products should already be selected by default. +6. In Configuration Wizard, make sure you add `Device Status Notification` API. The list of API should look like this: ![](/images/integrations/tuya/image_002.png) 7. Click `Authorize`. @@ -60,6 +62,7 @@ This is a separate account to the one you made for the app. You cannot log in wi ![](/images/integrations/tuya/image_004.png) 4. Click `Confirm` in the app. 5. To confirm that everything worked, navigate to the `All Devices` tab. Here you should be able to find the devices from the app. +6. If zero devices are imported, try changing the DataCenter. ![](/images/integrations/tuya/image_005.png) diff --git a/source/_integrations/universal.markdown b/source/_integrations/universal.markdown index 32a1e5c3aa0..d1fbfac37b4 100644 --- a/source/_integrations/universal.markdown +++ b/source/_integrations/universal.markdown @@ -94,7 +94,7 @@ It is also recommended that the command `volume_up`, the command `volume_down`, When providing `select_source` as a command, it is recommended to also provide the attributes `source`, and `source_list`. The `source` attribute is the currently select source, while the `source_list` attribute is a list of all available sources. -When using `state_template`, if you use a template that depends on the current time or some other non-deterministic result not sourced from entities, the template won't repeatedly update but will only update when the state of a referenced entity updates. For ways to deal with this issue, see the [example](/integrations/binary_sensor.template/#working-without-entities) in the template binary_sensor. +When using `state_template`, if you use a template that depends on the current time it is recommended to use `now()`. Using `now()` will cause templates to be refreshed at the start of every new minute. For more information see the [time](/docs/configuration/templating/#time) section in the template documentation. ## Usage examples diff --git a/source/_integrations/uptimerobot.markdown b/source/_integrations/uptimerobot.markdown index bccae431c42..cca8648de9f 100644 --- a/source/_integrations/uptimerobot.markdown +++ b/source/_integrations/uptimerobot.markdown @@ -1,5 +1,5 @@ --- -title: Uptime Robot +title: UptimeRobot description: Instructions on how to set up Uptime Robot within Home Assistant. ha_category: - System Monitor @@ -14,10 +14,10 @@ ha_quality_scale: platinum ha_config_flow: true --- -The `uptimerobot` integration provides binary sensors to get the status for all of your monitors from your account on [Uptime Robot]( https://uptimerobot.com). +The `uptimerobot` integration provides binary sensors to get the status for all of your monitors from your account on [UptimeRobot]( https://uptimerobot.com). {% include integrations/config_flow.md %} -To get your API key, go to [My Settings](https://uptimerobot.com/dashboard#mySettings) on the Uptime Robot website, at the bottom you will find your "Read-Only API Key". +To get your API key, go to [My Settings](https://uptimerobot.com/dashboard#mySettings) on the UptimeRobot website, at the bottom you will find your "Read-Only API Key". -All the data will be fetched from [Uptime Robot](https://uptimerobot.com). +All the data will be fetched from [UptimeRobot](https://uptimerobot.com). diff --git a/source/_integrations/usb.markdown b/source/_integrations/usb.markdown index a297d1d10a2..9c20fa3e2d5 100644 --- a/source/_integrations/usb.markdown +++ b/source/_integrations/usb.markdown @@ -11,15 +11,15 @@ ha_codeowners: - '@bdraco' --- -The USB Discovery integration will watch the host for USB devices. Discovered integrations will show up in the discovered section on the integrations page in the configuration panel. +The USB Discovery integration will detect newly connected USB devices. Discovered devices will show up in the discovered section on the integrations page in the configuration panel. -- On all supported systems, devices are detected at startup. +- On all supported systems, devices are detected during startup. - On Linux systems that have functional `udev` support, including Home Assistant Operating System, devices are detected as soon as they are plugged in. - On non-Linux systems or systems without `udev` support, devices are detected when visiting the integrations page and during onboarding. ## Configuration -This integration is by default enabled, unless you've disabled or removed the [`default_config:`](/integrations/default_config/) line from your configuration. If that is the case, the following example shows you how to enable this integration manually: +This integration is part of [`default_config:`](/integrations/default_config/) if you have opted to not use [`default_config:`](/integrations/default_config/)you can add this integration by adding the following lines to your `configuration.yaml` ```yaml # Example configuration.yaml entry diff --git a/source/_integrations/utility_meter.markdown b/source/_integrations/utility_meter.markdown index 9093f3d0e66..42c250e3e51 100644 --- a/source/_integrations/utility_meter.markdown +++ b/source/_integrations/utility_meter.markdown @@ -56,7 +56,7 @@ offset: type: integer cron: description: This option is *mutually exclusive* of `cycle` and `offset`. It provides an advanced method of defining when should the counter be reset. It follows common [crontab syntax](https://crontab.guru). - required: true + required: false type: string net_consumption: description: Set this to True if you would like to treat the source as a net meter. This will allow your counter to go both positive and negative. diff --git a/source/_integrations/vallox.markdown b/source/_integrations/vallox.markdown index d5b56d33921..de93525458d 100644 --- a/source/_integrations/vallox.markdown +++ b/source/_integrations/vallox.markdown @@ -10,6 +10,8 @@ ha_domain: vallox ha_platforms: - fan - sensor +ha_codeowners: + - '@andre-richter' --- The `vallox` integration lets you control any Vallox ventilation unit that is supported by the [vallox_websocket_api](https://github.com/yozik04/vallox_websocket_api) (follow the link for a list of supported units). diff --git a/source/_integrations/watttime.markdown b/source/_integrations/watttime.markdown index 74fc69c1daf..0d5fa0a60d8 100644 --- a/source/_integrations/watttime.markdown +++ b/source/_integrations/watttime.markdown @@ -3,7 +3,7 @@ title: WattTime description: Instructions on how to set up the WattTime integration within Home Assistant. ha_category: - Sensor -ha_release: 2021.10.0 +ha_release: '2021.10' ha_iot_class: Cloud Polling ha_domain: watttime ha_codeowners: diff --git a/source/_integrations/weather.template.markdown b/source/_integrations/weather.template.markdown index 295485397b6..7d8c2a335bd 100644 --- a/source/_integrations/weather.template.markdown +++ b/source/_integrations/weather.template.markdown @@ -20,17 +20,19 @@ Another use case could be using temperature and humidity from one weather platfo To enable a Template Weather provider in your installation, add the following to your `configuration.yaml` file: +(Note, be sure to update my_region in the condition and forecast templates to an appropriate value for your setup). + {% raw %} ```yaml # Example configuration.yaml entry weather: - platform: template - name: "my very own weather station" - condition_template: "sunny" - temperature_template: "{{ states('sensor.temperature') | float}}" - humidity_template: "{{ states('sensor.humidity')| float }}" - forecast_template: "{{ states.weather.my_region.attributes.forecast }}" + name: "My Weather Station" + condition_template: "{{ states('weather.my_region') }}" + temperature_template: "{{ states('sensor.temperature') | float }}" + humidity_template: "{{ states('sensor.humidity') | float }}" + forecast_template: "{{ state_attr('weather.my_region', 'forecast') }}" ``` {% endraw %} diff --git a/source/_integrations/webostv.markdown b/source/_integrations/webostv.markdown index d145f6217d7..5d2ccb0b547 100644 --- a/source/_integrations/webostv.markdown +++ b/source/_integrations/webostv.markdown @@ -22,7 +22,7 @@ There is currently support for the following device types within Home Assistant: - [Media Player](#media-player) - [Notifications](#notifications) -To begin with enable *LG Connect Apps* feature in *Network* settings of the TV [instructions](https://www.lg.com/uk/support/product-help/CT00008334-1437131798537-others). +To begin with enable *LG Connect Apps* feature in *Network* settings of the TV. Once basic configuration is added to your `configuration.yaml` file. A notification should be visible in the frontend's **Notification** section. Follow the instructions and accept the pairing request on your TV. diff --git a/source/_integrations/whirlpool.markdown b/source/_integrations/whirlpool.markdown index 47daa003ffa..8bd8edba16e 100644 --- a/source/_integrations/whirlpool.markdown +++ b/source/_integrations/whirlpool.markdown @@ -1,15 +1,14 @@ --- -title: Whirlpool 6th Sense Live +title: Whirlpool Sixth Sense description: Instructions on how to integrate Whirlpool 6th Sense Live appliances with Home Assistant. ha_category: - Climate -ha_release: "2021.10.0" +ha_release: '2021.10' ha_iot_class: Cloud Push ha_config_flow: true ha_codeowners: - '@abmantis' ha_domain: whirlpool -ha_zeroconf: false ha_platforms: - climate --- @@ -39,4 +38,3 @@ The following services are also available: - [**turn on/off**](/integrations/climate#service-climateturn_on) - [**fan mode**](/integrations/climate#service-climateset_fan_mode) (`low`, `medium`, `high`) - [**swing mode**](/integrations/climate#service-climateset_swing_mode) (`off`, `horizontal`) - diff --git a/source/_integrations/withings.markdown b/source/_integrations/withings.markdown index c0bb3d1f714..b79f0f27346 100644 --- a/source/_integrations/withings.markdown +++ b/source/_integrations/withings.markdown @@ -133,7 +133,7 @@ sensor: withings_weight_lbs_USER_PROFILE_NAME: friendly_name: "withings weight_lbs_USER_PROFILE_NAME" unit_of_measurement: "lbs" - value_template: "{{ (states('sensor.withings_weight_kg_USER_PROFILE_NAME') | float * 2.20462262185) | round(2) }}" + value_template: "{{ (states('sensor.withings_weight_kg_USER_PROFILE_NAME') | float(0) * 2.20462262185) | round(2, default=0) }}" icon_template: mdi:weight-pound - platform: template @@ -141,7 +141,7 @@ sensor: withings_bone_mass_lbs_USER_PROFILE_NAME: friendly_name: "withings bone_mass_lbs_USER_PROFILE_NAME" unit_of_measurement: "lbs" - value_template: "{{ (states('sensor.withings_bone_mass_kg_USER_PROFILE_NAME') | float * 2.20462262185) | round(2) }}" + value_template: "{{ (states('sensor.withings_bone_mass_kg_USER_PROFILE_NAME') | float(0) * 2.20462262185) | round(2, default=0) }}" icon_template: mdi:weight-pound - platform: template @@ -149,7 +149,7 @@ sensor: withings_fat_free_mass_lbs_USER_PROFILE_NAME: friendly_name: "withings fat_free_mass_lbs_USER_PROFILE_NAME" unit_of_measurement: "lbs" - value_template: "{{ (states('sensor.withings_fat_free_mass_kg_USER_PROFILE_NAME') | float * 2.20462262185) | round(2) }}" + value_template: "{{ (states('sensor.withings_fat_free_mass_kg_USER_PROFILE_NAME') | float(0) * 2.20462262185) | round(2, default=0) }}" icon_template: mdi:weight-pound - platform: template @@ -157,7 +157,7 @@ sensor: withings_fat_mass_lbs_USER_PROFILE_NAME: friendly_name: "withings fat_mass_lbs_USER_PROFILE_NAME" unit_of_measurement: "lbs" - value_template: "{{ (states('sensor.withings_fat_mass_kg_USER_PROFILE_NAME') | float * 2.20462262185) | round(2) }}" + value_template: "{{ (states('sensor.withings_fat_mass_kg_USER_PROFILE_NAME') | float(0) * 2.20462262185) | round(2, default=0) }}" icon_template: mdi:weight-pound - platform: template @@ -165,7 +165,7 @@ sensor: withings_muscle_mass_lbs_USER_PROFILE_NAME: friendly_name: "withings muscle_mass_lbs_USER_PROFILE_NAME" unit_of_measurement: "lbs" - value_template: "{{ (states('sensor.withings_muscle_mass_kg_USER_PROFILE_NAME') | float * 2.20462262185) | round(2) }}" + value_template: "{{ (states('sensor.withings_muscle_mass_kg_USER_PROFILE_NAME') | float(0) * 2.20462262185) | round(2, default=0) }}" icon_template: mdi:weight-pound ``` diff --git a/source/_integrations/workday.markdown b/source/_integrations/workday.markdown index 22169dfba7a..f8a930b35ee 100644 --- a/source/_integrations/workday.markdown +++ b/source/_integrations/workday.markdown @@ -87,8 +87,7 @@ One other thing to watch is how the `holiday` keyword is used. Your first instin ## Full examples -This example excludes Saturdays, Sundays but not a holiday. Two custom holidays are added. -Even though `sat` and `sun` was not included in `workdays` and in theory, it would not need to be excluded, but because we do not what holidays excluded, we add them so exclude would not default and skip the holidays. Therefore as the note above, 2/17/2020 in the US would still be a workday. +This example excludes Saturdays and Sundays but not holidays. Two custom holidays are added. ```yaml # Example 1 configuration.yaml entry @@ -97,9 +96,12 @@ binary_sensor: country: US workdays: [mon, tue, wed, thu, fri] excludes: [sat, sun] + add_holidays: + - "2020-02-24" + - "2020-04-25" ``` -This example excludes Saturdays, Sundays and holidays. Two custom holidays are added. +This example excludes Saturdays, Sundays and holidays. One custom holiday is added. The date February 24th, 2020 is a Monday but will be excluded because it was added to the `add_holidays` configuration. ```yaml diff --git a/source/_integrations/yeelight.markdown b/source/_integrations/yeelight.markdown index 06b20516a20..af51348ac63 100644 --- a/source/_integrations/yeelight.markdown +++ b/source/_integrations/yeelight.markdown @@ -18,6 +18,7 @@ ha_platforms: ha_homekit: true ha_dhcp: true ha_quality_scale: platinum +ha_zeroconf: true --- The `yeelight` integration allows you to control your Yeelight Wi-Fi bulbs with Home Assistant. @@ -171,6 +172,7 @@ This integration is tested to work with the following models. If you have a diff | Model ID | Model number | Product name | |------------|--------------|--------------------------------------------------| +| `mono` | YLTD03YL | Yeelight Serene Eye-Friendly Desk Lamp | | `mono1` | YLDP01YL | LED Bulb (White) | | ? | YLDP05YL | LED Bulb (White) - 2nd generation | | `color1` | YLDP02YL | LED Bulb (Color) | @@ -182,23 +184,24 @@ This integration is tested to work with the following models. If you have a diff | `strip1` | YLDD01YL | Lightstrip (Color) | | `strip1` | YLDD02YL | Lightstrip (Color) | | ? | YLDD04YL | Lightstrip (Color) | +| `strip6` | YLDD05YL | Lightstrip (Color) | | `bslamp1` | MJCTD01YL | Xiaomi Mijia Bedside Lamp - Wi-Fi Version! | | `bslamp1` | MJCTD02YL | Xiaomi Mijia Bedside Lamp II | | `RGBW` | MJDP02YL | Mi LED smart Lamp - white and color Wi-Fi Version| +| `lamp` | MJTD02YL | Xiaomi Mijia Desk Lamp Pro | | `lamp1` | MJTD01YL | Xiaomi Mijia Smart LED Desk Lamp (autodiscovery isn't possible because the device doesn't support mDNS due to the small amount of RAM) | +| `lamp15` | YLTD003 | Yeelight LED Screen Light Bar Pro | | `ceiling1` | YLXD01YL | Yeelight Ceiling Light | | `ceiling2` | YLXD03YL | Yeelight Ceiling Light - Youth Version | | ? | YLXD62YI | Yeelight Ceiling Light (Jiaoyue 260) | | ?, may be `ceiling3` | YLXD04YL | Yeelight Ceiling Light (Jiaoyue 450) | | `ceiling3` | YLXD05YL | Yeelight Ceiling Light (Jiaoyue 480) | | `ceiling4` | YLXD02YL | Yeelight Ceiling Light (Jiaoyue 650) | -| `mono` | YLTD03YL | Yeelight Serene Eye-Friendly Desk Lamp | -| `ceiling10` | YLDL01YL | Yeelight Meteorite Pendant Light | -| `ceiling13` | YLXD01YL | Yeelight LED Ceiling Light | -| ? | YLXD013-B | Yeelight Arwen Ceiling Light 450C | -| ? | YLXD013-C | Yeelight Arwen Ceiling Light 550C | +| `ceiling10`| YLDL01YL | Yeelight Meteorite Pendant Light | +| `ceiling13`| YLXD01YL | Yeelight LED Ceiling Light | | `ceil26` | YLXD76YL | Yeelight Ceiling Light - Updated HomeKit 23w | -| `lamp` | MJTD02YL | Xiaomi Mijia Desk Lamp Pro | +| ? | YLXD013-B | Yeelight Arwen Ceiling Light 450C | +| ? | YLXD013-C | Yeelight Arwen Ceiling Light 550C | ## Services diff --git a/source/_integrations/youless.markdown b/source/_integrations/youless.markdown index d59cc495223..2950b689e89 100644 --- a/source/_integrations/youless.markdown +++ b/source/_integrations/youless.markdown @@ -16,7 +16,11 @@ ha_platforms: The YouLess integration for Home Assistant allows you to read the meter values from sensors created by [YouLess](https://www.youless.nl/home.html). -The integration is tested and verified for the LS120 device. +The integration is tested and verified for the following devices from YouLess: + +* LS110 +* LS120 running PVOutput firmware +* LS120 running Enologic firmware {% include integrations/config_flow.md %} diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown index a2c6feca089..57adddd5976 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -82,16 +82,17 @@ Some other Zigbee coordinator hardware may not support a firmware that is capabl - [CC2652P/CC2652R/CC2652RB USB stick, module, or dev board hardware flashed with Z-Stack coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters) - [CC1352P/CC1352R USB stick, module, or dev board hardware flashed with Z-Stack coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters) - [CC2538 USB stick, module, or dev board hardware flashed with Z-Stack coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters) - - [CC2530/CC2531 USB stick, module, or dev board hardware flashed with Z-Stack coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters) + - [CC2530/CC2531 USB stick, module, or dev board hardware flashed with Z-Stack coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters) (not recommended for Zigbee networks with more than 20 devices) - Digi XBee Zigbee based radios (via the [zigpy-xbee](https://github.com/zigpy/zigpy-xbee) library for zigpy) - [Digi XBee Series 3 (xbee3-24)](https://www.digi.com/products/embedded-systems/digi-xbee/rf-modules/2-4-ghz-rf-modules/xbee3-zigbee-3) and [Digi XBee Series S2C](https://www.digi.com/products/embedded-systems/digi-xbee/rf-modules/2-4-ghz-rf-modules/xbee-zigbee) modules - Note! While not a must, [it is recommend to upgrade XBee Series 3 and S2C to newest firmware using XCTU](https://www.digi.com/resources/documentation/Digidocs/90002002/Default.htm#Tasks/t_load_zb_firmware.htm) - [Digi XBee Series 2 (S2)](https://www.digi.com/support/productdetail?pid=3430) modules (Note! This first have to be [flashed with Zigbee Coordinator API firmware](https://www.digi.com/support/productdetail?pid=3430)) - ZiGate based radios (via the [zigpy-zigate](https://github.com/zigpy/zigpy-zigate) library for zigpy and require firmware 3.1d or later) - - [ZiGate USB-TTL](https://zigate.fr/produit/zigate-ttl/) - - [ZiGate USB-DIN](https://zigate.fr/produit/zigate-usb-din/) - - [PiZiGate](https://zigate.fr/produit/pizigate-v1-0/) - - [Wifi ZiGate](https://zigate.fr/produit/zigate-pack-wifi-v1-3/) + - [ZiGate USB](https://zigate.fr/produit/zigate-usb/) + - [ZiGate USB-DIN](https://zigate.fr/produit/zigatev2-usb-din/) + - [PiZiGate (ZiGate Raspberry Pi module)](https://zigate.fr/produit/pizigatev2/) + - [ZiGate-Ethernet (Ethernet gateway board for PiZiGate)](https://zigate.fr/produit/zigate-ethernet/) + - [ZiGate + WiFi Pack](https://zigate.fr/produit/zigatev2-pack-wifi/) #### Warning about Wi-Fi-based Zigbee-to-Serial bridges/gateways diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown index 7e482530d89..83587a7bf6d 100644 --- a/source/_integrations/zwave_js.markdown +++ b/source/_integrations/zwave_js.markdown @@ -465,7 +465,7 @@ trigger: #### Available Trigger Data -In addition to the [standard automation trigger data](docs/automation/templating/#all), the `zwave_js.value_updated` trigger platform has additional trigger data available for use. +In addition to the [standard automation trigger data](/docs/automation/templating/#all), the `zwave_js.value_updated` trigger platform has additional trigger data available for use. | Template variable | Data | |------------------------------|--------------------------------------------------------------------------------------------| @@ -486,19 +486,22 @@ In addition to the [standard automation trigger data](docs/automation/templating ## Current Limitations - While support for the most common devices is working, some command classes are not yet (fully) implemented in Z-Wave JS. You can track the status [here](https://github.com/zwave-js/node-zwave-js/issues/6). -- There currently is no migration path available from any of the other Z-Wave implementations in Home Assistant. Your Z-Wave network is however stored on your stick so migrating will only require you to redo your device and entity naming. You can keep track of the Roadmap for the Z-Wave JS integration [here](https://github.com/home-assistant-libs/zwave-js-server-python/issues/56). ## Migrating from previous Z-Wave implementations -If you are currently running on the [`zwave`](/integrations/zwave/) or [`ozw`](/integrations/ozw/) Z-Wave integration and it works fine, there is **no need to switch over at this time** to Z-Wave JS. It is important to know is that most development focus currently goes to Z-Wave JS. The previous implementations are still provided as-is. They will **NOT be removed** without proper notice but in time there *might* come technical dependencies that render one or both of those integrations unusable. - If you're new to Home Assistant, use Z-Wave JS. The `zwave` integration has been marked as deprecated and will no longer receive any updates like new device files. The `ozw` integration will receive new device files if they are provided by upstream. -It is perfectly doable to switch over from one of the above mentioned previous integrations to the new Z-Wave JS integration. The good news is that your entire Z-Wave network is **stored on your stick** so you will not have to run through your house to recreate your network. That said, we currently do not provide a full-fledged, worry-free, click-a-button, migration from old to new. We're exploring options to provide this in the future. This means that if you want to switch over now, *you* will be the migration wizard. +It is perfectly doable to switch over from one of the above mentioned previous integrations to the new Z-Wave JS integration. The good news is that your entire Z-Wave network is **stored on your stick** so you will not have to run through your house to recreate your network. + +If you are currently running the [`zwave`](/integrations/zwave/) or [`ozw`](/integrations/ozw/) Z-Wave integration and it works fine, there is **no need to switch over at this time** to Z-Wave JS. What is important to know is that all development focus currently goes to Z-Wave JS. The previous implementations are provided as-is. They will **NOT be removed** without proper notice but in time there *might* come technical dependencies that render one or both of those integrations unusable. + +### Automatic migration wizard + +For the `zwave` integration there is a migration wizard that will help you set up the Z-Wave JS integration, remove the `zwave` integration and migrate the entities and devices that can be mapped from the `zwave` integration to the Z-Wave JS integration. Some entities may not be able to migrate automatically and you will need to rename the corresponding available Z-Wave JS entities manually, after the migration. Before completing the migration you will be shown a list of entities that could not be migrated automatically, and you'll have the option to abort or continue with the migration. The migration wizard is available from the `zwave` integration configuration panel in the GUI. ### In a nutshell this is what the migration path looks like @@ -714,3 +717,7 @@ to pick up those new names, either reload the integration or restart Home Assist When trying to determine why something isn't working as you expect, or when reporting an issue with the integration, it is helpful to know what Z-Wave JS sees as the current state of your Z-Wave network. To get a dump of your current network state, follow the menu: **Configuration** -> **Integrations** -> **Z-Wave JS** -> **Configure** -> **Download a dump of your network to help diagnose issues** + +### Interference issues + +Many users have reported issues with interference when the USB stick was directly connected to the machine (proximity). If you are having issues try to use a short USB 2.0 A male to female extension cord. diff --git a/source/_lovelace/iframe.markdown b/source/_lovelace/iframe.markdown index 310029219b2..d17b8cd982d 100644 --- a/source/_lovelace/iframe.markdown +++ b/source/_lovelace/iframe.markdown @@ -29,7 +29,7 @@ url: type: string aspect_ratio: required: false - description: Height to width ratio. + description: 'Forces the height of the image to be a ratio of the width. Valid formats: Height percentage value (`23%`) or ratio expressed with colon or "x" separator (`16:9` or `16x9`). For a ratio, the second element can be omitted and will default to "1" (`1.78` equals `1.78:1`).' type: string default: "50%" title: diff --git a/source/_lovelace/map.markdown b/source/_lovelace/map.markdown index 65259d0d5da..846aeb0d4d3 100644 --- a/source/_lovelace/map.markdown +++ b/source/_lovelace/map.markdown @@ -33,7 +33,7 @@ title: type: string aspect_ratio: required: false - description: "Forces the height of the image to be a ratio of the width. You may enter a value such as: `16x9`, `16:9`, `1.78`." + description: 'Forces the height of the image to be a ratio of the width. Valid formats: Height percentage value (`23%`) or ratio expressed with colon or "x" separator (`16:9` or `16x9`). For a ratio, the second element can be omitted and will default to "1" (`1.78` equals `1.78:1`).' type: string default_zoom: required: false diff --git a/source/_lovelace/picture-elements.markdown b/source/_lovelace/picture-elements.markdown index 3106d43df10..b3da3774750 100644 --- a/source/_lovelace/picture-elements.markdown +++ b/source/_lovelace/picture-elements.markdown @@ -361,7 +361,7 @@ state_filter: type: map aspect_ratio: required: false - description: Height to width ratio. + description: 'Forces the height of the image to be a ratio of the width. Valid formats: Height percentage value (`23%`) or ratio expressed with colon or "x" separator (`16:9` or `16x9`). For a ratio, the second element can be omitted and will default to "1" (`1.78` equals `1.78:1`).' type: string default: "50%" style: diff --git a/source/_lovelace/picture-entity.markdown b/source/_lovelace/picture-entity.markdown index b0e84aca0bd..5fe174d1c79 100644 --- a/source/_lovelace/picture-entity.markdown +++ b/source/_lovelace/picture-entity.markdown @@ -44,7 +44,7 @@ state_filter: type: map aspect_ratio: required: false - description: "Forces the height of the image to be a ratio of the width. You may enter a value such as: `16x9`, `16:9`, `1.78`." + description: 'Forces the height of the image to be a ratio of the width. Valid formats: Height percentage value (`23%`) or ratio expressed with colon or "x" separator (`16:9` or `16x9`). For a ratio, the second element can be omitted and will default to "1" (`1.78` equals `1.78:1`).' type: string name: required: false diff --git a/source/_lovelace/picture-glance.markdown b/source/_lovelace/picture-glance.markdown index 89972b57d70..b7817d0e2ba 100644 --- a/source/_lovelace/picture-glance.markdown +++ b/source/_lovelace/picture-glance.markdown @@ -53,7 +53,7 @@ state_filter: type: map aspect_ratio: required: false - description: "Forces the height of the image to be a ratio of the width. You may enter a value such as: `16x9`, `16:9`, `1.78`." + description: 'Forces the height of the image to be a ratio of the width. Valid formats: Height percentage value (`23%`) or ratio expressed with colon or "x" separator (`16:9` or `16x9`). For a ratio, the second element can be omitted and will default to "1" (`1.78` equals `1.78:1`).' type: string entity: required: false diff --git a/source/_posts/2019-09-17-happy-birthday.markdown b/source/_posts/2019-09-17-happy-birthday.markdown index b20575e54a6..da04c20fa97 100644 --- a/source/_posts/2019-09-17-happy-birthday.markdown +++ b/source/_posts/2019-09-17-happy-birthday.markdown @@ -23,7 +23,7 @@ Thanks to all the people working on the Home Assistant frontend. Thanks to all the people working on Hass.io. -Thanks to all the people workin on the mobile apps. +Thanks to all the people working on the mobile apps. Thanks to all the people working on Hass.io add-ons. @@ -43,7 +43,7 @@ Thanks to all the people making videos sharing their achievements using Home Ass Thanks to all the people writing blog posts about Home Assistant. -Thanks to all the people invovled in making the Home Asssistant Podcast. +Thanks to all the people involved in making the Home assistant Podcast. Thanks to all the people moderating our community, maintaining its high quality. diff --git a/source/_posts/2019-12-20-all-i-want-is-open-standards.markdown b/source/_posts/2019-12-20-all-i-want-is-open-standards.markdown index b11eda9fa9a..a3e25bc5fe7 100644 --- a/source/_posts/2019-12-20-all-i-want-is-open-standards.markdown +++ b/source/_posts/2019-12-20-all-i-want-is-open-standards.markdown @@ -14,7 +14,7 @@ It's been a busy week with a lot of announcements around IoT standards, so I tho ## New IoT standard announced -As it's been a while, the industry has announced yet a new effort to create a new IoT standard called [Project Connected Home over IP](https://www.connectedhomeip.com/). I think that there are a few interesting bits to this standard: +As it's been a while, the industry has announced yet a new effort to create a new IoT standard called [Project Matter](https://buildwithmatter.com) (formally called: 'Connected Home over IP'). I think that there are a few interesting bits to this standard: The standard will be royalty-free. This is big, as it means that it will be easy for companies to build products. Take, for example, Homekit, which is a great IP-based local standard. Homekit has strict licensing and royalties, which prevented it from widespread adoption. diff --git a/source/_posts/2020-01-31-community-highlights.markdown b/source/_posts/2020-01-31-community-highlights.markdown index 2c30d1f98d2..c3f0234c919 100644 --- a/source/_posts/2020-01-31-community-highlights.markdown +++ b/source/_posts/2020-01-31-community-highlights.markdown @@ -65,7 +65,7 @@ Also, don't forget to share your creations with us via Social Media: - Twitter it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2020-02-07-community-highlights.markdown b/source/_posts/2020-02-07-community-highlights.markdown index 604d59f4477..8cfb8a84b86 100644 --- a/source/_posts/2020-02-07-community-highlights.markdown +++ b/source/_posts/2020-02-07-community-highlights.markdown @@ -79,7 +79,7 @@ Also, don't forget to share your creations with us via Social Media: - Twitter it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2020-02-19-community-highlights.markdown b/source/_posts/2020-02-19-community-highlights.markdown index d60fe20479d..bd692f93ce3 100644 --- a/source/_posts/2020-02-19-community-highlights.markdown +++ b/source/_posts/2020-02-19-community-highlights.markdown @@ -91,7 +91,7 @@ Also, don't forget to share your creations with us via Social Media: - Twitter it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2020-02-28-community-highlights.markdown b/source/_posts/2020-02-28-community-highlights.markdown index 2b511862628..4b904aad9f1 100644 --- a/source/_posts/2020-02-28-community-highlights.markdown +++ b/source/_posts/2020-02-28-community-highlights.markdown @@ -88,7 +88,7 @@ Also, don't forget to share your creations with us via Social Media: - Twitter it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2020-03-15-community-highlights.markdown b/source/_posts/2020-03-15-community-highlights.markdown index cf196fea07d..b3282669102 100644 --- a/source/_posts/2020-03-15-community-highlights.markdown +++ b/source/_posts/2020-03-15-community-highlights.markdown @@ -90,7 +90,7 @@ Also, don't forget to share your creations with us via Social Media: - Twitter it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2020-09-20-community-highlights.markdown b/source/_posts/2020-09-20-community-highlights.markdown index 7023dabc762..031664cbf47 100644 --- a/source/_posts/2020-09-20-community-highlights.markdown +++ b/source/_posts/2020-09-20-community-highlights.markdown @@ -102,7 +102,7 @@ Also, don't forget to share your creations with us via Social Media: - Twitter it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2020-11-30-community-highlights.markdown b/source/_posts/2020-11-30-community-highlights.markdown index f2e55321fac..f0a980f1929 100644 --- a/source/_posts/2020-11-30-community-highlights.markdown +++ b/source/_posts/2020-11-30-community-highlights.markdown @@ -121,7 +121,7 @@ Also, don't forget to share your creations with us via Social Media: - Twitter it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-02-12-community-highlights.markdown b/source/_posts/2021-02-12-community-highlights.markdown index 93bef00e0ec..bdedd9b4678 100644 --- a/source/_posts/2021-02-12-community-highlights.markdown +++ b/source/_posts/2021-02-12-community-highlights.markdown @@ -80,7 +80,7 @@ Also, don't forget to share your creations with us via Social Media: - Twitter it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-02-19-community-highlights.markdown b/source/_posts/2021-02-19-community-highlights.markdown index 90e1b429634..ea59c75fa43 100644 --- a/source/_posts/2021-02-19-community-highlights.markdown +++ b/source/_posts/2021-02-19-community-highlights.markdown @@ -73,7 +73,7 @@ Also, don't forget to share your creations with us via Social Media: - Twitter it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-02-26-community-highlights.markdown b/source/_posts/2021-02-26-community-highlights.markdown index 775f384f22e..4cbfe145b90 100644 --- a/source/_posts/2021-02-26-community-highlights.markdown +++ b/source/_posts/2021-02-26-community-highlights.markdown @@ -87,7 +87,7 @@ Also, don't forget to share your creations with us via Social Media: - Twitter it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-03-05-community-highlights.markdown b/source/_posts/2021-03-05-community-highlights.markdown index d35a3824803..d894a9ecc08 100644 --- a/source/_posts/2021-03-05-community-highlights.markdown +++ b/source/_posts/2021-03-05-community-highlights.markdown @@ -99,7 +99,7 @@ Also, don't forget to share your creations with us via Social Media: - Twitter it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-03-12-community-highlights.markdown b/source/_posts/2021-03-12-community-highlights.markdown index 17a532fc94f..5e548c431c9 100644 --- a/source/_posts/2021-03-12-community-highlights.markdown +++ b/source/_posts/2021-03-12-community-highlights.markdown @@ -108,7 +108,7 @@ Also, don't forget to share your creations with us via Social Media: - Tweet it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-03-19-community-highlights.markdown b/source/_posts/2021-03-19-community-highlights.markdown index 1b527ccfdd2..9e0ce91ae58 100644 --- a/source/_posts/2021-03-19-community-highlights.markdown +++ b/source/_posts/2021-03-19-community-highlights.markdown @@ -73,7 +73,7 @@ Also, don't forget to share your creations with us via Social Media: - Tweet it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-03-26-community-highlights.markdown b/source/_posts/2021-03-26-community-highlights.markdown index ae28c4de64d..78dc26b3a9f 100644 --- a/source/_posts/2021-03-26-community-highlights.markdown +++ b/source/_posts/2021-03-26-community-highlights.markdown @@ -84,7 +84,7 @@ Also, don't forget to share your creations with us via Social Media: - Tweet it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-04-02-community-highlights.markdown b/source/_posts/2021-04-02-community-highlights.markdown index 8e9e9632fed..6283bdc3bf9 100644 --- a/source/_posts/2021-04-02-community-highlights.markdown +++ b/source/_posts/2021-04-02-community-highlights.markdown @@ -102,7 +102,7 @@ Also, don't forget to share your creations with us via Social Media: - Tweet it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-04-09-community-highlights.markdown b/source/_posts/2021-04-09-community-highlights.markdown index 79e5fc07c6e..10e7488db87 100644 --- a/source/_posts/2021-04-09-community-highlights.markdown +++ b/source/_posts/2021-04-09-community-highlights.markdown @@ -103,7 +103,7 @@ Also, don't forget to share your creations with us via Social Media: - Tweet it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-04-16-community-highlights.markdown b/source/_posts/2021-04-16-community-highlights.markdown index d36ffb3a79c..9492d62d586 100644 --- a/source/_posts/2021-04-16-community-highlights.markdown +++ b/source/_posts/2021-04-16-community-highlights.markdown @@ -91,7 +91,7 @@ Also, don't forget to share your creations with us via Social Media: - Tweet it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-04-23-community-highlights.markdown b/source/_posts/2021-04-23-community-highlights.markdown index b9576742eb0..4bbf5f4d994 100644 --- a/source/_posts/2021-04-23-community-highlights.markdown +++ b/source/_posts/2021-04-23-community-highlights.markdown @@ -113,7 +113,7 @@ Also, don't forget to share your creations with us via Social Media: - Tweet it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-04-30-community-highlights.markdown b/source/_posts/2021-04-30-community-highlights.markdown index 19658c37df1..955d1d5c7ef 100644 --- a/source/_posts/2021-04-30-community-highlights.markdown +++ b/source/_posts/2021-04-30-community-highlights.markdown @@ -113,7 +113,7 @@ Also, don't forget to share your creations with us via Social Media: - Tweet it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-05-07-community-highlights.markdown b/source/_posts/2021-05-07-community-highlights.markdown index fa21aca0073..669987c3301 100644 --- a/source/_posts/2021-05-07-community-highlights.markdown +++ b/source/_posts/2021-05-07-community-highlights.markdown @@ -130,7 +130,7 @@ Also, don't forget to share your creations with us via Social Media: - Tweet it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-05-14-community-highlights.markdown b/source/_posts/2021-05-14-community-highlights.markdown index 37cb4ca1282..f1aee51490b 100644 --- a/source/_posts/2021-05-14-community-highlights.markdown +++ b/source/_posts/2021-05-14-community-highlights.markdown @@ -96,7 +96,7 @@ Also, don't forget to share your creations with us via Social Media: - Tweet it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-05-21-community-highlights.markdown b/source/_posts/2021-05-21-community-highlights.markdown index 011e4122cc1..2578dddcd05 100644 --- a/source/_posts/2021-05-21-community-highlights.markdown +++ b/source/_posts/2021-05-21-community-highlights.markdown @@ -87,7 +87,7 @@ Also, don't forget to share your creations with us via Social Media: - Tweet it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-05-28-community-highlights.markdown b/source/_posts/2021-05-28-community-highlights.markdown index 28adbdbbd53..633e111e2f3 100644 --- a/source/_posts/2021-05-28-community-highlights.markdown +++ b/source/_posts/2021-05-28-community-highlights.markdown @@ -91,7 +91,7 @@ Also, don't forget to share your creations with us via Social Media: - Tweet it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-06-04-community-highlights.markdown b/source/_posts/2021-06-04-community-highlights.markdown index 546d797e1c0..df09cf2f844 100644 --- a/source/_posts/2021-06-04-community-highlights.markdown +++ b/source/_posts/2021-06-04-community-highlights.markdown @@ -98,7 +98,7 @@ Also, don't forget to share your creations with us via Social Media: - Tweet it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-06-11-community-highlights.markdown b/source/_posts/2021-06-11-community-highlights.markdown index 017cfb2016d..fd2ad8cbc14 100644 --- a/source/_posts/2021-06-11-community-highlights.markdown +++ b/source/_posts/2021-06-11-community-highlights.markdown @@ -102,7 +102,7 @@ Also, don't forget to share your creations with us via Social Media: - Tweet it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-06-18-community-highlights.markdown b/source/_posts/2021-06-18-community-highlights.markdown index d0f11226adb..5f151db3350 100644 --- a/source/_posts/2021-06-18-community-highlights.markdown +++ b/source/_posts/2021-06-18-community-highlights.markdown @@ -101,7 +101,7 @@ Also, don't forget to share your creations with us via Social Media: - Tweet it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-06-25-community-highlights.markdown b/source/_posts/2021-06-25-community-highlights.markdown index c32c2528a23..8b98618e3c3 100644 --- a/source/_posts/2021-06-25-community-highlights.markdown +++ b/source/_posts/2021-06-25-community-highlights.markdown @@ -96,7 +96,7 @@ Also, don't forget to share your creations with us via Social Media: - Tweet it! Be sure to mention [@home_assistant][twitter] - Share it on our [Facebook group][facebook-group] - Post it to our [subreddit][reddit] -- Tag [@homeasssistant][instagram] on Instagram +- Tag [@homeassistant][instagram] on Instagram - Or via chat, drop us a line in the [#lounge at Discord][chat] See you next edition! diff --git a/source/_posts/2021-09-01-release-20219.markdown b/source/_posts/2021-09-01-release-20219.markdown index 0c81298a056..0cdd2496ff3 100644 --- a/source/_posts/2021-09-01-release-20219.markdown +++ b/source/_posts/2021-09-01-release-20219.markdown @@ -130,7 +130,7 @@ fulfilled in this release. For example, the [Kostal Plenticore Solar Inverter](/integrations/kostal_plenticore), [PVOutput](/integrations/pvoutput), [Fronius](/integrations/fronius), [SolaX Power](/integrations/solax), [Growatt](/integrations/growatt_server), -[Solar-Log](/integrations/solar_log), [YouLess](/integrations/youless), +[Solar-Log](/integrations/solarlog), [YouLess](/integrations/youless), [Emoncms](/integrations/emoncms), [Modbus](/integrations/modbus), and many more have added support for all the energy goodness. diff --git a/source/_posts/2021-10-06-release-202110.markdown b/source/_posts/2021-10-06-release-202110.markdown new file mode 100644 index 00000000000..cf13318cec6 --- /dev/null +++ b/source/_posts/2021-10-06-release-202110.markdown @@ -0,0 +1,2670 @@ +--- +layout: post +title: "2021.10.0: Z-Wave S2 support, Tuya, secure ESPHome and 400 new icons" +description: "Z-Wave JS S2 support, the new official Tuya integration, secure communications with ESPHome devices, and 400 new MDI icons!" +date: 2021-10-06 00:00:00 +date_formatted: "October 6, 2021" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: +- Release-Notes +- Core +og_image: /images/blog/2021-10/social.png +--- + + + +October! I love this month! + +For most of you (just like me), it means winter is coming. We all go back +inside. An excellent excuse to spent a bit more time on our smart homes, right? 😃 + +It is also the month of celebrating open source by joining +[Hacktoberfest][hacktoberfest]! If you make 4 contributions to any open-source +project (Home Assistant, for example 😘), you'll receive a free t-shirt! + +For the Home Assistant project, this means a busy month. However, that doesn't +matter. It is always great to see new people contributing! + +Meanwhile, Home Assistant turned 8 years old already! Wild! And the birthday +announcement was even wilder (more about that below). + +Anyways, about this release: Z-Wave JS is stepping up its game! If you have +a Z-Wave network and are not using Z-Wave JS yet... well... it might be time +to bite the bullet and go for it. You won't regret it. + +This release also brings the new much-talked-about, Tuya integration +supported by Tuya themselves! I'm looking forward to how that evolves! + +Oh, and of course, we will be live streaming the 2021.10 release party later today! +Join us at @ 21:00 CEST. + +Enjoy the release! + +../Frenck + +[hacktoberfest]: https://hacktoberfest.digitalocean.com/ + + +- [Home Assistant Amber](#home-assistant-amber) +- [Z-Wave JS updates!](#z-wave-js-updates) + - [S2 is now supported](#s2-is-now-supported) + - [Migration wizard from the old Z-Wave integration](#migration-wizard-from-the-old-z-wave-integration) +- [New Tuya integration](#new-tuya-integration) +- [Updated Material Design Icons](#updated-material-design-icons) +- [Encrypted communications support for ESPHome](#encrypted-communications-support-for-esphome) +- [Other noteworthy changes](#other-noteworthy-changes) +- [New Integrations](#new-integrations) +- [Integrations now available to set up from the UI](#integrations-now-available-to-set-up-from-the-ui) +- [Release 2021.10.1 - October 7](#release-2021101---october-7) +- [Release 2021.10.2 - October 8](#release-2021102---october-8) +- [Release 2021.10.3 - October 10](#release-2021103---october-10) +- [Release 2021.10.4 - October 11](#release-2021104---october-11) +- [Release 2021.10.5 - October 15](#release-2021105---october-15) +- [Release 2021.10.6 - October 18](#release-2021106---october-18) +- [If you need help...](#if-you-need-help) +- [Breaking Changes](#breaking-changes) +- [Farewell to the following](#farewell-to-the-following) +- [All changes](#all-changes) + +## Home Assistant Amber + +In case you've missed it: Home Assistant turned 8 years old! 🥳 +And to celebrate that, we've revealed the **Home Assistant Amber**! + +Home Assistant Amber was launched using a crowdfunding campaign, which already +reached its funding goal! This is absolutely fantastic! + +And... You can still back the campaign to get your own Home Assistant Amber! + + +### [Go to campaign on CrowdSupply »](https://www.crowdsupply.com/nabu-casa/home-assistant-amber) + + + +## Z-Wave JS updates! + +We have two awesome Z-Wave JS updates to share with you this release. + +### S2 is now supported + +Security is something we all care about; We don't want devices to be tampered +with, when using things like door locks or motion sensors that trip the alarm +system. For our Z-Wave devices, this is no different! + +As of this release, Home Assistant's Z-Wave JS integration supports S2! + +S2 is short for Security 2, a new security standard for Z-Wave devices, +providing different keys for each device in the network. It is +the more secure upgrade of the previous S0 version. + +Besides improved security, S2 capable devices (in general) are more reliable, +provide greater battery life and have less latency compared to S0. + +The Z-Wave JS integration will automatically pick the best and most optimal +security method available. + +

+Screenshot of Z-Wave JS pairing a new device with S2 security +Automatically uses the best possible security method when adding a new Z-Wave device. +

+ +If you have existing Z-Wave devices capable of using S2 already paired with +Home Assistant before this update, you will need to repair those to let them +use the new S2 feature. + +### Migration wizard from the old Z-Wave integration + +Are you still using the old (and deprecated) `zwave` integration? If so, it +might be that you have been holding back on the Z-Wave JS upgrade because of +the work involved in migrating. Time to reconsider... + +Home Assistant now provides a migration wizard for users of the old Z-Wave +integration to migrate more easily to the new Z-Wave JS integration. + +To avoid surprises, the wizard will exactly show what it will do, +what it can and cannot migrate. + +The old and deprecated Z-Wave integration will continue to work as long +as technically possible, but will no longer receive updates. + +## New Tuya integration + +Oh yeah! The Tuya integration has been updated to the latest greatest version: +developed and maintained by a team of developers at Tuya themselves! + +Right now, we have support for lights, switches, scenes, fans and climate +devices. Compared to the old integration, support for covers is currently +missing, which we hope to add in a future release. Additionally, +the new integration now pushes updates to Home Assistant! + +If you ran the Tuya integration previously, you need to set it up from scratch, +as the integration has been entirely re-written and uses a different API. + +For more information, please see the [Tuya integration documentation](/integrations/tuya/). + +## Updated Material Design Icons + +The [Material Design Icons][mdi] have been updated to v6! + +This new version of MDI is packed with nearly 400 new icons (and over 75+ icons +have been specifically marked for Home Assistant) ❤️ + +

+Sample image showing some of the new Material Design Icons available +Some really useful new MDI icons have been added in this release! +

+ +Several icons have been removed or renamed in v6, but we have ensured +they will keep working for the upcoming two releases. Home Assistant will +write warnings in the logs in case you are using one of the affected icons. +The breaking changes section has more information about this. + +[mdi]: https://materialdesignicons.com/ + +## Encrypted communications support for ESPHome + +ESPHome and the ESPHome integration now have support for communicating +encrypted with each other. [@OttoWinter] has been working hard to add +this layer of encryption to the ESPHome API, +which utilizes the [noise protocol][noise]. + +Besides this version of Home Assistant, you'll need at least +[ESPHome 2021.9.0][esphome], and configure your ESPHome device to enable +encrypted communications. + +Awesome job [@OttoWinter]! + +For more information on how to do that, check out the +[ESPHome documentation](https://esphome.io/components/api.html?#configuration-variables). + +[esphome]: https://esphome.io/changelog/2021.9.0.html +[noise]: http://www.noiseprotocol.org/ + +## Other noteworthy changes + +There is much more juice in this release; here are some of the other +noteworthy changes this release: + +- The energy dashboard now supports gas sensors that use kWh as the unit of + measurement. +- We have a new dev tool available for long-term statistics. This tool + can be helpful when you need to resolve issues or warnings with the statistics. + {% my developer_statistics badge %} +- The Shelly team has been busy and added support for the new, next-generation, + Shelly devices. Also known as Gen2 or Plus devices (which are WebSocket RPC + based). +- The TP-Link Kasa Smart integration had a lot of love and improvements: support + for new devices, configurable via the UI and device discovery. It fixes the + famous and disliked "unavailable" bug! Thanks [@rytilahti]! +- [@Aohzan] adjusted the Logitech Harmony integration to have a select + entity to change the activity. Very handy! +- HomeKit now supports the `select` and `input_select` entities, thanks to [@ha0y]! +- [@Kane610] added support to deCONZ for the Siren entity. +- The manual alarm control panel now supports vacation mode, thanks [@mbo18]! +- [@koying] added a new template method: `regex_findall`, that can return + a list of all matches of a regular expression. +- [@emontnemery] added more template goodness by adding the `is_number` + function and filter that can be used to quickly determine if a value is + a number or not. +- The Lovelace entity card now supports setting the icon to change color when + the entity is active (`state_color`). Thanks, [@spacegaier] +- The SwitchBot integration is receiving a lot of love from [@RenierM26]! + A bunch of new platforms, configuration via the UI, nice work! + +## New Integrations + +We welcome the following new integrations this release: + +- [Airthings][airthings docs], added by [@Danielhiversen] +- [Amberelectric][amberelectric docs], added by [@madpilot] +- [Crownstone][crownstone docs], added by [@RicArch97] +- [WattTime][watttime docs], added by [@bachya] +- [Whirlpool Sixth Sense][whirlpool docs], added by [@abmantis] + +## Integrations now available to set up from the UI + +The following integrations are now available via the Home Assistant UI: + +- [DLNA-DMR][dlna_dmr docs], done by [@chishm] +- [Modem Caller ID][modem_callerid docs], done by [@tkdrob] +- [Netgear][netgear docs], done by [@starkillerOG] +- [OpenGarage][opengarage docs], done by [@Danielhiversen] +- [Sure Petcare][surepetcare docs], done by [@Danielhiversen] +- [SwitchBot][switchbot docs], done by [@RenierM26] + +## Release 2021.10.1 - October 7 + +- Recreate the powerwall session/object when attempting relogin ([@bdraco] - [#56935]) ([powerwall docs]) +- Update led brightness select state only if valid data is available, Xiaomi Miio integration ([@bieniu] - [#57197]) ([xiaomi_miio docs]) +- Convert val to str when needed while calling zwave_js.set_value ([@raman325] - [#57216]) ([zwave_js docs]) +- Discover tplink devices periodically ([@bdraco] - [#57221]) ([tplink docs]) +- Correct SQL query generated by get_metadata_with_session ([@emontnemery] - [#57225]) ([recorder docs]) +- Fix netgear config flow import ([@MartinHjelmare] - [#57253]) ([netgear docs]) +- Validate initial value for input_datetime ([@emontnemery] - [#57256]) ([input_datetime docs]) +- Bump Mill library to 0.6.1 ([@Danielhiversen] - [#57261]) ([mill docs]) +- Fix RGB only (no color temp) devices with tplink ([@bdraco] - [#57267]) ([tplink docs]) +- Update frontend to 20211007.0 ([@bramkragten] - [#57268]) ([frontend docs]) +- Fix transition handling for tplink lights ([@rytilahti] - [#57272]) ([tplink docs]) +- Bump HAP-python to 4.30 ([@bdraco] - [#57284]) ([homekit docs]) +- Stopgap fix for inconsistent upstream API of tplink dimmers ([@rytilahti] - [#57285]) ([tplink docs]) +- Bump yeelight to 0.7.7 ([@bdraco] - [#57290]) ([yeelight docs]) + +[#56935]: https://github.com/home-assistant/core/pull/56935 +[#57197]: https://github.com/home-assistant/core/pull/57197 +[#57216]: https://github.com/home-assistant/core/pull/57216 +[#57221]: https://github.com/home-assistant/core/pull/57221 +[#57225]: https://github.com/home-assistant/core/pull/57225 +[#57253]: https://github.com/home-assistant/core/pull/57253 +[#57256]: https://github.com/home-assistant/core/pull/57256 +[#57261]: https://github.com/home-assistant/core/pull/57261 +[#57267]: https://github.com/home-assistant/core/pull/57267 +[#57268]: https://github.com/home-assistant/core/pull/57268 +[#57272]: https://github.com/home-assistant/core/pull/57272 +[#57284]: https://github.com/home-assistant/core/pull/57284 +[#57285]: https://github.com/home-assistant/core/pull/57285 +[#57290]: https://github.com/home-assistant/core/pull/57290 +[@Danielhiversen]: https://github.com/Danielhiversen +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@bramkragten]: https://github.com/bramkragten +[@emontnemery]: https://github.com/emontnemery +[@raman325]: https://github.com/raman325 +[@rytilahti]: https://github.com/rytilahti +[frontend docs]: /integrations/frontend/ +[homekit docs]: /integrations/homekit/ +[input_datetime docs]: /integrations/input_datetime/ +[mill docs]: /integrations/mill/ +[netgear docs]: /integrations/netgear/ +[powerwall docs]: /integrations/powerwall/ +[recorder docs]: /integrations/recorder/ +[tplink docs]: /integrations/tplink/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[yeelight docs]: /integrations/yeelight/ +[zwave_js docs]: /integrations/zwave_js/ + +## Release 2021.10.2 - October 8 + +- Netgear fix port and device model beeing overwritten ([@starkillerOG] - [#57277]) ([netgear docs]) +- Fix Nanoleaf light turn_off transition ([@milanmeu] - [#57305]) ([nanoleaf docs]) +- Migrate tplink hosts that were previously imported from yaml ([@bdraco] - [#57308]) ([tplink docs]) +- Upgrade aionanoleaf to 0.0.3 to fix deadlock ([@milanmeu] - [#57312]) ([nanoleaf docs]) +- Improve state of cover groups ([@emontnemery] - [#57313]) ([group docs]) +- Fix multiple upnp/ssdp issues ([@StevenLooman] - [#57314]) ([upnp docs]) ([yeelight docs]) ([dlna_dmr docs]) ([ssdp docs]) +- Guard for bad last reset ([@balloob] - [#57344]) ([sensor docs]) + +[#57277]: https://github.com/home-assistant/core/pull/57277 +[#57305]: https://github.com/home-assistant/core/pull/57305 +[#57308]: https://github.com/home-assistant/core/pull/57308 +[#57312]: https://github.com/home-assistant/core/pull/57312 +[#57313]: https://github.com/home-assistant/core/pull/57313 +[#57314]: https://github.com/home-assistant/core/pull/57314 +[#57344]: https://github.com/home-assistant/core/pull/57344 +[@StevenLooman]: https://github.com/StevenLooman +[@balloob]: https://github.com/balloob +[@bdraco]: https://github.com/bdraco +[@emontnemery]: https://github.com/emontnemery +[@milanmeu]: https://github.com/milanmeu +[@starkillerOG]: https://github.com/starkillerOG +[dlna_dmr docs]: /integrations/dlna_dmr/ +[group docs]: /integrations/group/ +[nanoleaf docs]: /integrations/nanoleaf/ +[netgear docs]: /integrations/netgear/ +[sensor docs]: /integrations/sensor/ +[ssdp docs]: /integrations/ssdp/ +[tplink docs]: /integrations/tplink/ +[upnp docs]: /integrations/upnp/ +[yeelight docs]: /integrations/yeelight/ + +## Release 2021.10.3 - October 10 + +- Catch errors for efergy ([@tkdrob] - [#57326]) ([efergy docs]) +- Use switch format unique ids for tplink dimmers ([@bdraco] - [#57346]) ([tplink docs]) +- Fix Shelly RGB/W supported color mode detection ([@thecode] - [#57359]) ([shelly docs]) +- Bump pynws to 1.3.2 ([@MatthewFlamm] - [#57361]) ([nws docs]) +- Bump Switchbot library ([@RenierM26] - [#57367]) ([switchbot docs]) +- Bump pyhaversion to 21.10.0 ([@ludeeus] - [#57377]) ([version docs]) +- Update frontend to 20211007.1 ([@bramkragten] - [#57385]) ([frontend docs]) +- Do all of dhcp scapy startup in the executor ([@bdraco] - [#57392]) ([dhcp docs]) +- Remove executor calls in isy994 as its fully async ([@bdraco] - [#57394]) ([isy994 docs]) +- Fix default parameter values for service opentherm_gw.set_clock ([@mvn23] - [#57397]) ([opentherm_gw docs]) +- Fix `opentherm_gw.set_clock` `time` parameter name ([@mvn23] - [#57398]) ([opentherm_gw docs]) +- Restore yeelight workaround for failing to update state after on/off ([@bdraco] - [#57400]) ([yeelight docs]) +- Fix Shelly button filter empty event ([@thecode] - [#57427]) ([shelly docs]) +- Fix Shelly button type in roller mode ([@thecode] - [#57429]) ([shelly docs]) +- Bump zeroconf to 0.36.8 ([@bdraco] - [#57451]) ([zeroconf docs]) +- Fix netgear renamed mdi icons ([@thecode] - [#57431]) ([netgear docs]) + +[#57326]: https://github.com/home-assistant/core/pull/57326 +[#57346]: https://github.com/home-assistant/core/pull/57346 +[#57359]: https://github.com/home-assistant/core/pull/57359 +[#57361]: https://github.com/home-assistant/core/pull/57361 +[#57367]: https://github.com/home-assistant/core/pull/57367 +[#57377]: https://github.com/home-assistant/core/pull/57377 +[#57385]: https://github.com/home-assistant/core/pull/57385 +[#57392]: https://github.com/home-assistant/core/pull/57392 +[#57394]: https://github.com/home-assistant/core/pull/57394 +[#57397]: https://github.com/home-assistant/core/pull/57397 +[#57398]: https://github.com/home-assistant/core/pull/57398 +[#57400]: https://github.com/home-assistant/core/pull/57400 +[#57427]: https://github.com/home-assistant/core/pull/57427 +[#57429]: https://github.com/home-assistant/core/pull/57429 +[#57431]: https://github.com/home-assistant/core/pull/57431 +[#57451]: https://github.com/home-assistant/core/pull/57451 +[@MatthewFlamm]: https://github.com/MatthewFlamm +[@RenierM26]: https://github.com/RenierM26 +[@bdraco]: https://github.com/bdraco +[@bramkragten]: https://github.com/bramkragten +[@ludeeus]: https://github.com/ludeeus +[@mvn23]: https://github.com/mvn23 +[@thecode]: https://github.com/thecode +[@tkdrob]: https://github.com/tkdrob +[dhcp docs]: /integrations/dhcp/ +[efergy docs]: /integrations/efergy/ +[frontend docs]: /integrations/frontend/ +[isy994 docs]: /integrations/isy994/ +[netgear docs]: /integrations/netgear/ +[nws docs]: /integrations/nws/ +[opentherm_gw docs]: /integrations/opentherm_gw/ +[shelly docs]: /integrations/shelly/ +[switchbot docs]: /integrations/switchbot/ +[tplink docs]: /integrations/tplink/ +[version docs]: /integrations/version/ +[yeelight docs]: /integrations/yeelight/ +[zeroconf docs]: /integrations/zeroconf/ + +## Release 2021.10.4 - October 11 + +- Upgrade youless library to fix missing sensor LS110 ([@gjong] - [#57366]) ([youless docs]) +- Fix Netgear orbi port in ssdp discovery ([@starkillerOG] - [#57432]) ([netgear docs]) +- Fix upnp creating derived sensors ([@StevenLooman] - [#57436]) ([upnp docs]) +- Fix referenced before assignment in modem_callerid ([@tkdrob] - [#57460]) ([modem_callerid docs]) +- Upgrade aiomusiccast to tolererate not decodable characters ([@micha91] - [#57461]) ([yamaha_musiccast docs]) +- Detect if mysql and sqlite support row_number ([@emontnemery] - [#57475]) ([recorder docs]) ([sensor docs]) +- Bump youtube-dl to 2021.06.06 ([@chpego] - [#57490]) ([media_extractor docs]) +- Simplify yeelight setup to improve reliability ([@bdraco] - [#57500]) ([yeelight docs]) + +[#57366]: https://github.com/home-assistant/core/pull/57366 +[#57432]: https://github.com/home-assistant/core/pull/57432 +[#57436]: https://github.com/home-assistant/core/pull/57436 +[#57460]: https://github.com/home-assistant/core/pull/57460 +[#57461]: https://github.com/home-assistant/core/pull/57461 +[#57475]: https://github.com/home-assistant/core/pull/57475 +[#57490]: https://github.com/home-assistant/core/pull/57490 +[#57500]: https://github.com/home-assistant/core/pull/57500 +[@StevenLooman]: https://github.com/StevenLooman +[@bdraco]: https://github.com/bdraco +[@chpego]: https://github.com/chpego +[@emontnemery]: https://github.com/emontnemery +[@gjong]: https://github.com/gjong +[@micha91]: https://github.com/micha91 +[@starkillerOG]: https://github.com/starkillerOG +[@tkdrob]: https://github.com/tkdrob +[media_extractor docs]: /integrations/media_extractor/ +[modem_callerid docs]: /integrations/modem_callerid/ +[netgear docs]: /integrations/netgear/ +[recorder docs]: /integrations/recorder/ +[sensor docs]: /integrations/sensor/ +[upnp docs]: /integrations/upnp/ +[yamaha_musiccast docs]: /integrations/yamaha_musiccast/ +[yeelight docs]: /integrations/yeelight/ +[youless docs]: /integrations/youless/ + +## Release 2021.10.5 - October 15 + +- Log reason for DLNA-DMR device becoming unavailable ([@chishm] - [#57516]) ([dlna_dmr docs]) +- Bump Mill library to 0.6.2 ([@Danielhiversen] - [#57533]) ([mill docs]) +- Fix Fast.com autoupdate ([@Z1ni] - [#57552]) ([fastdotcom docs]) +- Bump simplisafe-python to 11.0.7 ([@bachya] - [#57573]) ([simplisafe docs]) +- Correct detection of row_number support for MariaDB ([@emontnemery] - [#57663]) ([recorder docs]) +- Ensure Notion device name is stored as a string ([@bachya] - [#57670]) ([notion docs]) +- Bump spiderpy to 1.4.3 ([@peternijssen] - [#57675]) ([spider docs]) +- Fix Shelly humidity sensor available condition ([@thecode] - [#57721]) ([shelly docs]) +- Reconnect and retry yeelight commands after previous wifi drop out ([@bdraco] - [#57741]) ([yeelight docs]) +- Always send color/temp when switching from an effect in yeelight ([@bdraco] - [#57745]) ([yeelight docs]) +- Fix Youless state class for power total sensor ([@gjong] - [#57758]) ([youless docs]) +- Fix broken upnp derived sensors reporting b/s instead of kb/s ([@StevenLooman] - [#57681]) ([upnp docs]) + +[#57516]: https://github.com/home-assistant/core/pull/57516 +[#57533]: https://github.com/home-assistant/core/pull/57533 +[#57552]: https://github.com/home-assistant/core/pull/57552 +[#57573]: https://github.com/home-assistant/core/pull/57573 +[#57663]: https://github.com/home-assistant/core/pull/57663 +[#57670]: https://github.com/home-assistant/core/pull/57670 +[#57675]: https://github.com/home-assistant/core/pull/57675 +[#57681]: https://github.com/home-assistant/core/pull/57681 +[#57721]: https://github.com/home-assistant/core/pull/57721 +[#57741]: https://github.com/home-assistant/core/pull/57741 +[#57745]: https://github.com/home-assistant/core/pull/57745 +[#57758]: https://github.com/home-assistant/core/pull/57758 +[@Danielhiversen]: https://github.com/Danielhiversen +[@StevenLooman]: https://github.com/StevenLooman +[@Z1ni]: https://github.com/Z1ni +[@bachya]: https://github.com/bachya +[@bdraco]: https://github.com/bdraco +[@chishm]: https://github.com/chishm +[@emontnemery]: https://github.com/emontnemery +[@gjong]: https://github.com/gjong +[@peternijssen]: https://github.com/peternijssen +[@thecode]: https://github.com/thecode +[dlna_dmr docs]: /integrations/dlna_dmr/ +[fastdotcom docs]: /integrations/fastdotcom/ +[mill docs]: /integrations/mill/ +[notion docs]: /integrations/notion/ +[recorder docs]: /integrations/recorder/ +[shelly docs]: /integrations/shelly/ +[simplisafe docs]: /integrations/simplisafe/ +[spider docs]: /integrations/spider/ +[upnp docs]: /integrations/upnp/ +[yeelight docs]: /integrations/yeelight/ +[youless docs]: /integrations/youless/ + +## Release 2021.10.6 - October 18 + +- Avoid setting up harmony websocket from discovery ([@bdraco] - [#57589]) ([harmony docs]) +- Fix device class for energy plugwise sensors ([@squio] - [#57803]) ([plugwise docs]) +- Prevent yeelight discovery from overloading the bulb ([@bdraco] - [#57820]) ([yeelight docs]) +- Bump bond-api to 0.1.14 ([@bdraco] - [#57874]) ([bond docs]) +- Revert "Fix bmw_conntected_drive check_control_message short description" ([@cdce8p] - [#57928]) ([bmw_connected_drive docs]) +- Fix bug that prevents multiple instances of Tile ([@bachya] - [#57942]) ([tile docs]) + +[#57589]: https://github.com/home-assistant/core/pull/57589 +[#57803]: https://github.com/home-assistant/core/pull/57803 +[#57820]: https://github.com/home-assistant/core/pull/57820 +[#57874]: https://github.com/home-assistant/core/pull/57874 +[#57928]: https://github.com/home-assistant/core/pull/57928 +[#57942]: https://github.com/home-assistant/core/pull/57942 +[@bachya]: https://github.com/bachya +[@bdraco]: https://github.com/bdraco +[@cdce8p]: https://github.com/cdce8p +[@squio]: https://github.com/squio +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[bond docs]: /integrations/bond/ +[harmony docs]: /integrations/harmony/ +[plugwise docs]: /integrations/plugwise/ +[tile docs]: /integrations/tile/ +[yeelight docs]: /integrations/yeelight/ + +## If you need help... + +...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). + +Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/core/issues). Make sure to fill in all fields of the issue template. + + + +## Breaking Changes + +Below is a listing of the breaking change for this release, per subject or +integration. Click on one of those to read more about the breaking change +for that specific item. + +{% details "Templates" %} + +The following template filters and functions will now log a warning instead of +silently returning the input if the input is invalid and no default value is specified: + +- `acos` +- `as_timestamp` +- `asin` +- `atan` +- `atan2` +- `cos` +- `float` +- `log` +- `multiply` +- `round` +- `sin` +- `sqrt` +- `strptime` +- `tan` +- `timestamp_custom` +- `timestamp_local` +- `timestamp_utc` + +The `float` filter will now log a warning instead of silently returning `0` if +the input is invalid and no default value is specified. + +In Home Assistant Core 2021.12 the template will fail to render if no default +value is specified. You can specify a default value by passing to the filter like +this: {% raw %}`{{ "abc" | float(default=0) }}`{% endraw %}. + +([@emontnemery] - [#56453]) + +{% enddetails %} + +{% details "Material Design Icons (MDI)" %} + +The Material Design Icons have been upgraded to v6, which brings in around +400 new icons and removes and renames some others. + +The removed and renamed icons will keep working for this and the next release, +Home Assistant will write a warning to the logs in case +you are using one of the removed or renamed icons. + +The following icons have been removed: + +- `adobe-acrobat` +- `adobe` +- `amazon-alexa` +- `amazon` +- `android-auto` +- `android-debug-bridge` +- `bandcamp` +- `battlenet` +- `blogger` +- `buffer` +- `cash-usd-outline` +- `cash-usd` +- `cellphone-android` (alternative: `cellphone`) +- `cellphone-iphone` (alternative: `cellphone`) +- `concourse-ci` +- `currency-usd-circle` +- `currency-usd-circle-outline` +- `do-not-disturb-off` (alternative: `minus-circle-off`) +- `do-not-disturb` (alternative: `minus-circle`) +- `douban` +- `file-pdf` (alternative: `file-pdf-box`) +- `file-pdf-outline` (alternative: `file-pdf-box`) +- `file-pdf-box-outline` (alternative: `file-pdf-box`) +- `google-photos` +- `home-currency-usd` +- `laptop-chromebook` (alternative: `laptop`) +- `laptop-mac` (alternative: `laptop`) +- `laptop-windows` (alternative: `laptop`) +- `microsoft-edge-legacy` +- `microsoft-yammer` +- `pdf-box` (alternative: `file-pdf-box`) +- `plus-one` (alternative: `numeric-positive-1`) +- `poll-box` (alternative: `chart-box`) +- `poll-box-outline` (alternative: `chart-box-outline`) +- `tablet-ipad` (alternative: `tablet`) +- `telegram` +- `untappd` +- `vk` +- `xamarian-outline` +- `xing` +- `y-combinator` + +The following icons have been renamed: + +- `apple-airplay` to `cast-variant` +- `application` to `application-outline` +- `application-cog` to `application-cog-outline` +- `application-settings` to `application-settings-outline` +- `bolnisi-cross` to `cross-bolnisi` +- `boom-gate-up` to `boom-gate-arrow-up` +- `boom-gate-up-outline` to `boom-gate-arrow-up-outline` +- `boom-gate-down` to `boom-gate-arrow-down` +- `boom-gate-down-outline` to `boom-gate-arrow-down-outline` +- `buddhism` to `dharmachakra` +- `cellphone-erase` to `cellphone-remove` +- `celtic-cross` to `cross-celtic` +- `christianity` to `cross` +- `christianity-outline` to `cross-outline` +- `face` to `face-man` +- `face-outline` to `face-man-outline` +- `face-profile-woman` to `face-woman-profile` +- `face-shimmer` to `face-man-shimmer` +- `face-shimmer-outline` to `face-man-shimmer-outline` +- `flash-circle` to `lightning-bolt-circle` +- `floor-lamp-variant` to `floor-lamp-torchiere-variant` +- `gif` to `file-gif-box` +- `gradient` to `gradient-vertical` +- `hand` to `hand-front-right` +- `hand-left` to `hand-back-left` +- `hand-right` to `hand-back-right` +- `hinduism` to `om` +- `human-greeting` to `human-greeting-variant` +- `iframe` to `application-brackets` +- `iframe-outline` to `application-brackets-outline` +- `iframe-array` to `application-array` +- `iframe-array-outline` to `application-array-outline` +- `iframe-braces` to `application-braces` +- `iframe-braces-outline` to `application-braces-outline` +- `iframe-parentheses` to `application-parentheses` +- `iframe-parentheses-outline` to `application-parentheses-outline` +- `iframe-variable` to `application-variable` +- `iframe-variable-outline` to `application-variable-outline` +- `islam` to `star-crescent` +- `judaism` to `star-david` +- `monitor-clean` to `monitor-shimmer` +- `pharmacy` to `mortar-pestle-plus` +- `sparkles` to `shimmer` +- `teach` to `human-male-board` +- `television-clean` to `television-shimmer` +- `text-subject` to `text-long` +- `twitter-retweet` to `repeat-variant` +- `voice-off` to `account-voice-off` + +{% enddetails %} + +{% details "Alexa" %} + +Removes the support for legacy fan speeds. + +Using `speeds` ('off', 'low', 'medium' or 'high') for the `fan` platform became +deprecated with Home Assistant Core 2021.07, while preset modes and percentage +support was added. + +([@jbouwh] - [#55174]) ([alexa docs]) + +{% enddetails %} + +{% details "AVM FRITZ!Box Tools" %} + +In order to introduce the new `link` status binary sensor, the previous +`connectivity` sensor has been renamed to `connection`. + +Please check both your Lovelace configuration and your automations to reflect this change. + +([@chemelli74] - [#55446]) ([fritz docs]) + +{% enddetails %} + +{% details "Discovery API" %} + +The API endpoint `/api/discovery_info` now only return blank values. +This endpoint is scheduled to be removed in Home Assistant Core 2022.1. + +As a regular user of Home Assistant, this change should not affect you. + +([@ludeeus] - [#56097]) ([api docs]) + +{% enddetails %} + +{% details "DLNA Digital Media Renderer" %} + +The DLNA Digital Media Renderer integration migrated to configuration via the UI. Configuring +DLNA Digital Media Renderer via YAML configuration has been deprecated and will be removed in a +future Home Assistant release. + +Your existing YAML configuration is automatically imported on upgrade to this release; +and thus can be safely removed from your YAML configuration after upgrading. + +([@chishm] - [#55267]) ([dlna_dmr docs]) + +{% enddetails %} + +{% details "HomeKit" %} + +When an iOS device wakes up it has to refresh all the A records +for each paired accessory. When there are many paired accessories +this can result in HomeKit timing out before it can refresh +all the records and declaring some accessories unavailable. + +We now use the same server name for all HomeKit bridges and accessories +on a single Home Assistant instance. This allows the system to avoid +doing multiple lookups since it only needs to find one A record when +waking from sleep. + +iOS devices and Home Hubs (Apple TVs / HomePods / iPads) may cache +the server name even if it expires and may require +a reboot to see the new name. If this is the case, accessories may +show unavailable when outside the home until ALL home hubs are rebooted. + +([@bdraco] - [#55860]) + +{% enddetails %} + +{% details "Honeywell Lyric" %} + +The polling interval of the Honeywell Lyric integration has been decreased to +300 seconds to reduce chances of hitting API limit. + +([@timmo001] - [#56393]) ([lyric docs]) + +{% enddetails %} + +{% details "Minut Point" %} + +The (non-working) pressure sensor has been removed. + +([@fredrike] - [#56934]) ([point docs]) + +{% enddetails %} + +{% details "Modem Caller ID" %} + +The Modem Caller ID integration migrated to configuration via the UI. Configuring +Modem Caller ID via YAML configuration has been deprecated and will be removed in a +future Home Assistant release. + +Your existing YAML configuration is automatically imported on upgrade to this release; +and thus can be safely removed from your YAML configuration after upgrading. + +([@tkdrob] - [#46677]) ([modem_callerid docs]) + +{% enddetails %} + +{% details "Moon" %} + +The Moon entity would never have a primary moon phase state. So the state of +the moon would go from Waxing gibbous directly to Waning gibbous, +without being Full Moon in between. + +Now the Moon entity will correctly have the primary moon phases: New Moon, +First Quarter, Full Moon and Third Quarter. + +If you have automations relying on the state of the moon, please review them +to check if they still behave as intended. + +([@stefanroelofs] - [#55518]) ([moon docs]) + +{% enddetails %} + +{% details "NETGEAR" %} + +The NETGEAR integration migrated to configuration via the UI. Configuring +NETGEAR via YAML configuration has been deprecated and will be removed in a +future Home Assistant release. + +Your existing YAML configuration is automatically imported on upgrade to this release; +and thus can be safely removed from your YAML configuration after upgrading. + +([@starkillerOG] - [#54479]) ([netgear docs]) + +{% enddetails %} + +{% details "Network UPS Tools (NUT)" %} + +The extra attribute `state` is removed from all sensors, since it is already exposed as an own sensor. + +If you relied on this attribute for your automations or script, you might need to adjust to this change. + +([@mib1185] - [#56078]) ([nut docs]) + +{% enddetails %} + +{% details "OpenGarage" %} + +The OpenGarage integration has previously been migrated to configuration via the UI. +Configuring OpenGarage via YAML configuration has now been deprecated and will be +removed in a future Home Assistant release. + +Your existing YAML configuration is automatically imported on upgrade to this release; +and thus can be safely removed from your YAML configuration after upgrading. + +([@Danielhiversen] - [#56829]) ([opengarage docs]) + +{% enddetails %} + +{% details "Pi-hole" %} + +The extra attribute `domains_blocked` is removed from all sensors, since it is already exposed as an own sensor. + +If you relied on this attribute in your automations or script, you need to adjust those to match this change. + +([@mib1185] - [#56076]) ([pi_hole docs]) + +{% enddetails %} + +{% details "ReCollect Waste" %} + +The previously deprecated YAML configuration of the ReCollect Waste integration has been removed. + +ReCollect Waste is now configured via the UI, any existing YAML configuration has been imported +in previous releases and can now be safely removed from your YAML configuration files. + +([@bachya] - [#55426]) ([recollect_waste docs]) + +{% enddetails %} + +{% details "Renault" %} + +The extra state attribute `last_update` has been normalized to the UTC timezone. + +If you have any automation or scripts that relied on this, you might need +to adjust those to take this into account. + +([@epenet] - [#54745]) ([renault docs]) + +---- + +`sensor.charge_mode` has been moved to `select.charge_mode` (note: `unique_id` is unchanged). + +([@epenet] - [#55494]) ([renault docs]) + +{% enddetails %} + +{% details "RFXCOM RFXtrx" %} + +The previously deprecated YAML configuration of the RFXCOM RFXtrx integration has been removed. + +RFXCOM RFXtrx is now configured via the UI, any existing YAML configuration has been imported +in previous releases and can now be safely removed from your YAML configuration files. + +([@elupus] - [#54173]) ([rfxtrx docs]) + +{% enddetails %} + +{% details "Speedtest.net" %} + +The previously deprecated YAML configuration of the Speedtest.net integration has been removed. + +Speedtest.net is now configured via the UI, any existing YAML configuration has been imported +in previous releases and can now be safely removed from your YAML configuration files. + +([@engrbm87] - [#55642]) ([speedtestdotnet docs]) + +{% enddetails %} + +{% details "Sure Petcare" %} + +The Sure Petcare integration has previously been migrated to configuration via the UI. +Configuring Sure Petcare via YAML configuration has now been deprecated and will be +removed in a future Home Assistant release. + +Your existing YAML configuration is automatically imported on upgrade to this release; +and thus can be safely removed from your YAML configuration after upgrading. + +([@Danielhiversen] - [#56209]) ([surepetcare docs]) + +{% enddetails %} + +{% details "System Bridge" %} + +The following additional state attributes have been removed from the existing +sensors: + +- `available` +- `filesystem` +- `load_average` +- `load_idle` +- `load_system` +- `load_user` +- `mount` +- `size` +- `type` +- `used` + +You should update any automations and scripts that depend on these state +attribute to use the separate sensors available for these states. + +([@timmo001] - [#53892]) ([system_bridge docs]) + +{% enddetails %} + +{% details "TP-Link Kasa Smart" %} + +The TP-Link Kasa Smart integration migrated to configuration via the UI. Configuring +TP-Link Kasa Smart via YAML configuration has been deprecated and will be removed in a +future Home Assistant release. + +Your existing YAML configuration is automatically imported on upgrade to this release; +and thus can be safely removed from your YAML configuration after upgrading. + +([@rytilahti] - [#56701]) ([tplink docs]) + +{% enddetails %} + +{% details "Tuya" %} + +The previous Tuya API is no longer maintained by Tuya officially and the +new integration will be officially maintained by the Tuya Developer Team. + +If you used the integration before this release, you'd need to set it up +again from scratch. To do that, remove any existing instances +from the integration dashboard. After that, use our [documentation][tuya docs] +for guidance on setting up the new integration. + +The cover platform is not ready for this release but will be included later. +If you have cover devices, they will not available for control at the moment. + +([@zlinoliver] - [#56820]) ([tuya docs]) + +{% enddetails %} + +{% details "UPnP/IGD" %} + +UPnP/IGD integration no longer supports the `local_ip` configuration option. +If you still have this configured in your YAML configuration, please remove it. + +([@StevenLooman] - [#55540]) ([upnp docs]) + +{% enddetails %} + +{% details "Velbus" %} + +The Velbus integration migrated to configuration via the UI. Configuring +Velbus via YAML configuration has been deprecated and will be removed in a +future Home Assistant release. + +The Velbus services calls will now need an `interface` parameter, +this is to allow support for multiple Velbus connections. If you are using +Velbus services in your automations or scripts, you may been to adjust +those to this change. + +([@Cereal2nd] - [#54032]) ([velbus docs]) + +{% enddetails %} + +{% details "Xiaomi Miio" %} + +The `model` and `mode` attributes have been removed. +The `preset_mode` attribute is available in place of the `mode` attribute. + +The device model is available in the **Device info** window. + +([@bieniu] - [#55846]) ([xiaomi_miio docs]) + +{% enddetails %} + +{% details "Custom integrations: ruamel.yaml" %} + +The unused `ruamel.yaml` utility functions have been removed. They were never +in use nor documented. If your custom integration relied on `ruamel.yaml` being +installed, make sure it's part of your manifest. + +([@balloob] - [#55672]) + +{% enddetails %} + +## Farewell to the following + +The following integrations are no longer available as of this release: + +- **Trackr** has been removed. The API is no longer available and + has therefore been removed. ([@FuzzyMistborn] - [#55917]) +- **Tesla** has been removed due to increased Tesla login security preventing + third-parties to log in. ([@alandtse] - [#55988]) + +## All changes + +{% details "Click to see all changes!" %} + +- Use EntityDescription - renault ([@epenet] - [#55061]) ([renault docs]) +- Bump version to 2021.10.0dev0 ([@frenck] - [#55227]) +- Remove un-needed asserts on hass in Amecrest ([@flacjacket] - [#55244]) ([amcrest docs]) +- Remove option and range checks in Rituals integration ([@milanmeu] - [#55222]) ([rituals_perfume_genie docs]) +- Be tolerant of Wemo insight_param keys that might not exist ([@esev] - [#55232]) ([wemo docs]) +- Change entity_timers to be a local variable. ([@janiversen] - [#55258]) ([modbus docs]) +- Move AirlySensorEntityDescription to sensor platform ([@bieniu] - [#55277]) ([airly docs]) +- Add CONF_STATE_CLASS to `sensor/__init__.py` ([@farmio] - [#54106]) ([mqtt docs]) ([knx docs]) ([template docs]) +- Address late review for Renault integration ([@epenet] - [#55230]) ([renault docs]) +- Renault code quality improvements ([@epenet] - [#55313]) ([renault docs]) +- Adjust zha comment to be readable ([@bdraco] - [#55330]) ([zha docs]) +- Use EntityDescription - fritzbox ([@mib1185] - [#55104]) ([fritzbox docs]) +- Add data update coordinator to the Tautulli integration ([@ludeeus] - [#54706]) ([tautulli docs]) +- Address late review for Xiaomi Miio number platform ([@bieniu] - [#55275]) ([xiaomi_miio docs]) +- Add shutdown test. ([@janiversen] - [#55357]) ([modbus docs]) +- Activate mypy for sonar ([@janiversen] - [#55327]) ([sonarr docs]) +- Add select entity to Logitech Harmony ([@Aohzan] - [#53943]) ([harmony docs]) +- Re-configuration possibilities for Synology DSM ([@mib1185] - [#53285]) ([synology_dsm docs]) +- Solve modbus shutdown racing condition ([@janiversen] - [#55373]) ([modbus docs]) +- Address late fritzbox comments ([@mib1185] - [#55388]) ([fritzbox docs]) +- Remove legacy discovery after_dependencies from apple_tv ([@bdraco] - [#55390]) ([apple_tv docs]) +- Prevent storage loads from monopolizing the executor pool ([@bdraco] - [#55389]) +- Add ll hls to stream ([@uvjustin] - [#49608]) ([stream docs]) ([generic docs]) +- Simplify calcuation of Notion binary sensor state ([@bachya] - [#55387]) ([notion docs]) +- OVO Energy - Post #54952 Cleanup ([@timmo001] - [#55393]) ([ovo_energy docs]) +- Use EntityDescription - ambient_station ([@bachya] - [#55366]) ([ambient_station docs]) +- Enable basic type checking for cert_expiry ([@emontnemery] - [#55335]) ([cert_expiry docs]) +- Only return not return None ([@Kane610] - [#55423]) ([unifi docs]) +- Add myself to Vallox codeowners ([@andre-richter] - [#55428]) ([vallox docs]) +- Give ReCollect Waste sensor a friendlier label ([@bachya] - [#55427]) ([recollect_waste docs]) +- Deprecate YAML config for ReCollect Waste ([@bachya] - [#55426]) ([recollect_waste docs]) (breaking-change) +- Remove byte-range addressed parts in stream ([@uvjustin] - [#55396]) ([stream docs]) +- System Bridge 2.5.0 - Additional Sensors ([@timmo001] - [#53892]) ([system_bridge docs]) (breaking-change) +- Correct setup of system_bridge sensors ([@emontnemery] - [#55442]) ([system_bridge docs]) +- Use AwesomeVersion for account link service check ([@ludeeus] - [#55449]) ([cloud docs]) +- Refactor vallox constants ([@andre-richter] - [#55456]) ([vallox docs]) +- Whole-string match reqs in comment_requirement ([@TheBassEngineer] - [#55192]) +- Add long-term statistics for SimpliSafe sensors ([@bachya] - [#55419]) ([simplisafe docs]) +- Add -term statistics for Notion sensors ([@bachya] - [#55414]) ([notion docs]) +- Use EntityDescription - qnap ([@cdce8p] - [#55410]) ([qnap docs]) +- Add input_select and select domain support for HomeKit ([@ha0y] - [#54760]) ([homekit docs]) +- Fix Zone 2 and Zone 3 detection in onkyo ([@Feliksas] - [#55471]) ([onkyo docs]) +- Renault code quality improvements ([@epenet] - [#55454]) ([renault docs]) +- Add TLX daily power meter. for Growatt ([@JasperPlant] - [#55445]) ([growatt_server docs]) +- Allow device_id template function to use device name as input ([@raman325] - [#55474]) +- Add support for Xiaomi Miio Air Purifier 3C ([@bieniu] - [#55484]) ([xiaomi_miio docs]) +- Improvements to the solarlog integration ([@Ernst79] - [#55405]) ([solarlog docs]) +- Add vacation mode to manual alarm_control_panel ([@mbo18] - [#55340]) ([demo docs]) ([manual docs]) +- Add services to Renault integration ([@epenet] - [#54820]) ([renault docs]) +- Mock setup in spotify tests ([@ludeeus] - [#55515]) ([spotify docs]) +- Fix moon phases ([@stefanroelofs] - [#55518]) ([moon docs]) (breaking-change) +- Add device tracker platform to Renault integration ([@epenet] - [#54745]) ([renault docs]) (breaking-change) (new-platform) +- Add remote server to cloud system health ([@ludeeus] - [#55506]) ([cloud docs]) +- Add select platform to Renault integration ([@epenet] - [#55494]) ([renault docs]) (breaking-change) +- Open garage, add closing and opening to state ([@Danielhiversen] - [#55372]) ([opengarage docs]) +- OpenGarage, change to attributes ([@Danielhiversen] - [#55528]) ([opengarage docs]) +- Bump cloud to 0.47.1 ([@balloob] - [#55312]) ([cloud docs]) ([google_assistant docs]) +- Use respx.mock in generic camera tests ([@emontnemery] - [#55521]) ([generic docs]) +- Fix zeroconf mock and use it in CI group 1's tests ([@emontnemery] - [#55526]) ([homekit_controller docs]) ([esphome docs]) ([devolo_home_control docs]) ([bosch_shc docs]) +- Add additional test coverage for zwave_js meter sensors ([@raman325] - [#55465]) ([zwave_js docs]) +- Add test fixture for unauthenticated HTTP client ([@emontnemery] - [#55561]) ([almond docs]) +- Use hass_client_no_auth test fixture in integrations a-g ([@emontnemery] - [#55581]) +- Use hass_client_no_auth test fixture in integrations h-p ([@emontnemery] - [#55583]) +- Use hass_client_no_auth test fixture in integrations s-x ([@emontnemery] - [#55585]) +- Prevent 3rd party lib from opening sockets in broadlink tests ([@emontnemery] - [#55593]) ([broadlink docs]) +- Fix url lookup in telegram_bot webhook ([@ludeeus] - [#55587]) ([telegram_bot docs]) +- Prevent 3rd party lib from opening sockets in epson tests ([@emontnemery] - [#55595]) ([epson docs]) +- Prevent 3rd party lib from opening sockets in freedompro tests ([@emontnemery] - [#55596]) ([freedompro docs]) +- Mock sockets in the network integration tests ([@bdraco] - [#55594]) ([network docs]) +- Mock out network.util.async_get_source_ip in tests ([@emontnemery] - [#55592]) +- Bump pysmappee to 0.2.27 ([@bsmappee] - [#55257]) ([smappee docs]) +- Prevent 3rd party lib from opening sockets in broadlink tests ([@emontnemery] - [#55636]) ([broadlink docs]) +- Minor cleanup in Waze travel times ([@yuvalabou] - [#55422]) ([waze_travel_time docs]) +- Clean holiday attributes code in Jewish calendar ([@yuvalabou] - [#55080]) ([jewish_calendar docs]) +- Remove wheels for alpine 3.13 ([@pvizeli] - [#55650]) +- Add upnp sensor for IP, Status, and Uptime ([@ehendrix23] - [#54780]) ([upnp docs]) +- Always show state for the updater binary_sensor ([@ludeeus] - [#55584]) ([updater docs]) +- Use NamedTuple for color temperature range ([@cdce8p] - [#55626]) ([tplink docs]) +- Remove dead fritzbox code ([@cdce8p] - [#55617]) ([fritzbox docs]) +- Use EntityDescription - freebox ([@cdce8p] - [#55675]) ([freebox docs]) +- Use EntityDescription - luftdaten ([@cdce8p] - [#55676]) ([luftdaten docs]) +- Use EntityDescription - faa_delays ([@cdce8p] - [#55678]) ([faa_delays docs]) +- Use EntityDescription - econet ([@cdce8p] - [#55680]) ([econet docs]) +- Use EntityDescription - iperf3 ([@cdce8p] - [#55681]) ([iperf3 docs]) +- Fix Rachio service missing with 1st generation controllers ([@brg468] - [#55679]) ([rachio docs]) +- Use EntityDescription - picnic ([@cdce8p] - [#55682]) ([picnic docs]) +- Use EntityDescription - discogs ([@cdce8p] - [#55683]) ([discogs docs]) +- Use EntityDescription - airnow ([@cdce8p] - [#55684]) ([airnow docs]) +- Use EntityDescription - synology_dsm ([@cdce8p] - [#55407]) ([synology_dsm docs]) +- System Bridge - Set device class for binary sensor ([@timmo001] - [#55688]) ([system_bridge docs]) +- Update template/test_binary_sensor.py to use pytest ([@janiversen] - [#55220]) ([template docs]) +- Use NamedTuple for api endpoint settings ([@cdce8p] - [#55694]) ([hassio docs]) +- Use NamedTuple for touchline preset mode settings ([@cdce8p] - [#55695]) ([touchline docs]) +- Use NamedTuple for light color mode mapping ([@cdce8p] - [#55696]) ([light docs]) +- Type scaffold PLATFORMS ([@OldShaterhan] - [#55699]) +- Add reauth to Renault config flow ([@epenet] - [#55547]) ([renault docs]) +- Automation trigger info type hint improvements ([@scop] - [#55402]) +- Delay state update after switch is toggled for TP-Link HS210 device ([@mib1185] - [#55671]) ([tplink docs]) +- Avoid creating sockets in homekit port available tests ([@bdraco] - [#55668]) ([homekit docs]) +- Drop unused ruamel ([@balloob] - [#55672]) (breaking-change) +- Update template/test_sensor.py to use pytest ([@janiversen] - [#55288]) ([template docs]) +- Use NamedTuple for RGBColor ([@cdce8p] - [#55698]) +- Add bluez to the devcontainer ([@chemelli74] - [#55469]) +- Use NamedTuple for device_automation details ([@cdce8p] - [#55697]) ([device_automation docs]) +- Add caplog setup fixture. ([@janiversen] - [#55714]) ([template docs]) +- Bump motion_blinds to 0.5.5 ([@starkillerOG] - [#55710]) ([motion_blinds docs]) +- Remove deprecated device_state_attributes ([@cdce8p] - [#55734]) ([group docs]) ([gogogate2 docs]) ([nws docs]) ([plaato docs]) ([flipr docs]) +- Handle unknown preset mode in generic thermostat ([@brianegge] - [#55588]) ([generic_thermostat docs]) +- Tag Hue errors as format strings ([@balloob] - [#55751]) ([hue docs]) +- ADD: generalize regex_findall ([@koying] - [#54584]) +- Protect Huawei LTE against None ltedl/ulfreq ([@scop] - [#54411]) ([huawei_lte docs]) +- Optimize ZHA ZCL attribute reporting configuration ([@Adminiuga] - [#55796]) ([zha docs]) +- Update to denonavr version 0.10.9 ([@ol-iver] - [#55805]) ([denonavr docs]) +- Drop logger service fields because keys are dynamic ([@balloob] - [#55750]) ([logger docs]) +- ZHA: Added support for ZigBee Simple Sensor device and Binary Input c… ([@wsowa] - [#55819]) ([zha docs]) +- Bump envoy_reader API to 0.20.0 ([@gtdiehl] - [#55822]) ([enphase_envoy docs]) +- Change fix property to _attr for tradfri ([@janiversen] - [#55691]) ([tradfri docs]) +- Use EntityDescription - vilfo ([@cdce8p] - [#55746]) ([vilfo docs]) +- Use EntityDescription - awair ([@cdce8p] - [#55747]) ([awair docs]) +- Use EntityDescription - vultr ([@cdce8p] - [#55789]) ([vultr docs]) +- Use EntityDescription - meteoclimatic ([@cdce8p] - [#55792]) ([meteoclimatic docs]) +- Use EntityDescription - sabnzbd ([@cdce8p] - [#55788]) ([sabnzbd docs]) +- Use EntityDescription - aemet ([@cdce8p] - [#55744]) ([aemet docs]) +- Use EntityDescription - apcupsd ([@cdce8p] - [#55790]) ([apcupsd docs]) +- Alexa - Remove legacy speed support for fan platform ([@jbouwh] - [#55174]) ([alexa docs]) (breaking-change) +- Add service descriptions for supervisor backup restore services ([@spacegaier] - [#52766]) ([hassio docs]) +- Use EntityDescription - poolsense ([@cdce8p] - [#55743]) ([poolsense docs]) +- Use EntityDescription - aqualogic ([@cdce8p] - [#55791]) ([aqualogic docs]) +- Refactor exception handling in Vallox ([@andre-richter] - [#55461]) ([vallox docs]) +- Migrate emulated_hue tests from unittest to pytest ([@emontnemery] - [#55794]) ([emulated_hue docs]) +- Shutdown the container on abnormal signals ([@agners] - [#55660]) +- Replace zigpy-cc with zigpy-znp ([@puddly] - [#55828]) ([zha docs]) +- Add motion_blinds VerticalBlind and cleanup ([@starkillerOG] - [#55774]) ([motion_blinds docs]) +- Re-add state_class total to sensor ([@emontnemery] - [#55103]) ([recorder docs]) ([history docs]) ([sensor docs]) +- Make scapy imports in DHCP local ([@emontnemery] - [#55647]) ([dhcp docs]) +- Replace util.get_local_ip in favor of components.network.async_get_source_ip() - part 2 ([@chemelli74] - [#53368]) ([emulated_hue docs]) (breaking-change) +- Use `async_update_entry` in config unit test instead of modifying `data` ([@puddly] - [#55855]) ([zha docs]) +- Set state class to total for Integration sensors ([@emontnemery] - [#55872]) ([integration docs]) +- Refactor ZHA tests ([@Adminiuga] - [#55844]) ([zha docs]) +- Bump hass-nabucasa 49 ([@balloob] - [#55823]) ([cloud docs]) +- Fix assignment of amcrest camera model ([@flacjacket] - [#55266]) ([amcrest docs]) +- Set state class to total for net utility_meter sensors ([@emontnemery] - [#55877]) ([utility_meter docs]) +- Rewrite re-auth mechanism in Synology DSM integration ([@mib1185] - [#54298]) ([synology_dsm docs]) +- Add Flipr binary sensor ([@cnico] - [#53525]) ([flipr docs]) (new-platform) +- Add date device class ([@scop] - [#55887]) +- Address comment in integration Riemann sum PR #55875 ([@dgomes] - [#55895]) ([integration docs]) +- Fix upnp add_entities ([@cdce8p] - [#55904]) ([upnp docs]) +- Remove Trackr integration (API removed) ([@FuzzyMistborn] - [#55917]) ([trackr docs]) (breaking-change) +- Use EntityDescription - zoneminder ([@cdce8p] - [#55922]) ([zoneminder docs]) +- Use EntityDescription - incomfort ([@cdce8p] - [#55930]) ([incomfort docs]) +- Use EntityDescription - repetier ([@cdce8p] - [#55926]) ([repetier docs]) +- Use EntityDescription - konnected ([@cdce8p] - [#55923]) ([konnected docs]) +- deprecated unit_of_measurement ([@dgomes] - [#55876]) ([integration docs]) +- Bump pillow to 8.3.2 ([@balloob] - [#55970]) ([qrcode docs]) ([tensorflow docs]) ([proxy docs]) ([seven_segments docs]) ([doods docs]) ([sighthound docs]) ([image docs]) +- Consistent lower-case spelling of "optional" ([@spacegaier] - [#55976]) ([tesla docs]) ([yeelight docs]) ([plex docs]) ([nightscout docs]) ([flick_electric docs]) +- Address review comment from #55833 ([@emontnemery] - [#55985]) ([google_assistant docs]) +- Remove tesla integration ([@alandtse] - [#55988]) ([tesla docs]) (breaking-change) +- Rfxtrx drop yaml configuration ([@elupus] - [#54173]) ([rfxtrx docs]) (breaking-change) +- Add sum_decrease and sum_increase statistics ([@emontnemery] - [#55850]) ([recorder docs]) ([sensor docs]) +- Address post merge review of flipr binary sensor ([@cnico] - [#55983]) ([flipr docs]) +- Add mypy to elkm1. ([@janiversen] - [#55964]) ([elkm1 docs]) +- Add state class to Smart Meter Texas sensor ([@adamfeldman] - [#55665]) ([smart_meter_texas docs]) +- Add state belief services to bond integration ([@joshs85] - [#54735]) ([bond docs]) +- Add iotawatt high-accuracy energy readout sensors ([@jyavenard] - [#55512]) ([iotawatt docs]) +- Add package constraint anyio>=3.3.1 ([@uvjustin] - [#55997]) +- Change character set of statistics_meta table to utf8 ([@emontnemery] - [#56011]) ([recorder docs]) +- Make sure character set of events, states tables is utf8 ([@emontnemery] - [#56012]) ([recorder docs]) +- Fix zwave_js/node_state WS API command ([@raman325] - [#55979]) ([zwave_js docs]) +- Bump pysma to 0.6.6 & Fix Unit Checks ([@popoviciri] - [#56018]) ([sma docs]) +- Exclude @overload from coverage ([@emontnemery] - [#56021]) +- Fix state class for zwave_js energy entities ([@raman325] - [#56026]) ([zwave_js docs]) +- Really change character set of statistics_meta table to utf8 ([@emontnemery] - [#56029]) ([recorder docs]) +- Report integrations that block startup wrap up ([@bdraco] - [#56003]) +- Add nut Watts datapoint ([@wranglatang] - [#55491]) ([nut docs]) +- Surepetcare, use DataUpdateCoordinator ([@Danielhiversen] - [#55982]) ([surepetcare docs]) +- Add support for state class total to energy cost sensor ([@emontnemery] - [#55955]) ([energy docs]) +- Fix compounds in sensor device class comments ([@oxan] - [#55900]) ([sensor docs]) +- Fix circular import of scapy in dhcp ([@bdraco] - [#56040]) ([dhcp docs]) +- Revert "Suppress last_reset deprecation warning for energy cost sensor (#56037)" ([@emontnemery] - [#56042]) +- Surepetcare, fix late review ([@Danielhiversen] - [#56065]) ([surepetcare docs]) +- Revert "Bump pillow to 8.3.2 (#55970)" ([@ludeeus] - [#56048]) ([qrcode docs]) ([tensorflow docs]) ([proxy docs]) ([seven_segments docs]) ([doods docs]) ([sighthound docs]) ([image docs]) +- Wait for entities when updating energy preferences ([@emontnemery] - [#56057]) ([energy docs]) +- Handle logout prefs update for Google/Alexa ([@balloob] - [#56045]) ([cloud docs]) +- Update template/test_trigger.py to use pytest ([@janiversen] - [#55950]) ([template docs]) +- Updated changes for aioshelly 1.0.0 ([@thecode] - [#56083]) ([shelly docs]) +- Handle entity creation on new added zwave_js value ([@raman325] - [#55987]) ([zwave_js docs]) +- Remove unnecessary extra attribute from NUT sensors ([@mib1185] - [#56078]) ([nut docs]) (breaking-change) +- Add state_class to Ecobee sensors ([@bjpetit] - [#55996]) ([ecobee docs]) +- Update pymelcloud to 2.5.4 ([@vilppuvuorinen] - [#56096]) ([melcloud docs]) +- Add view to get installation type during onboarding ([@ludeeus] - [#56095]) ([onboarding docs]) +- Enforce strict typing for IQVIA ([@bachya] - [#53408]) ([iqvia docs]) +- Bump awesomeversion to 21.8.1 ([@KapJI] - [#55817]) +- Update template/test_lock.py to use pytest ([@janiversen] - [#56102]) ([template docs]) +- Fix attribute access on None on startup in ESPHome ([@oxan] - [#56105]) ([esphome docs]) +- Bump frontend to 20210911.0 ([@balloob] - [#56115]) ([frontend docs]) +- Blank out discovery info ([@ludeeus] - [#56097]) ([api docs]) (breaking-change) +- New icon names based on MDI 6.1.95 ([@kukulich] - [#56085]) ([history docs]) ([xiaomi_miio docs]) ([miflora docs]) +- Add config flow support for RPC device ([@thecode] - [#56118]) +- Move parts of ssdp to async_upnp_client ([@StevenLooman] - [#55540]) ([upnp docs]) ([sonos docs]) ([dlna_dmr docs]) ([ssdp docs]) (breaking-change) +- Bump HAP-python to 4.2.1 ([@bdraco] - [#55804]) ([homekit docs]) +- Use the same server name for all HomeKit bridges ([@bdraco] - [#55860]) (breaking-change) +- Add audio support option to HomeKit camera UI config flow ([@xdissent] - [#56107]) ([homekit docs]) +- Surepetcare, upgrade library ([@Danielhiversen] - [#56067]) ([surepetcare docs]) +- Don't return a unique_id if Lutron doesn't have a UUID for the device. ([@cdheiser] - [#56113]) ([lutron docs]) +- Use EntityDescription - xiaomi_aqara ([@cdce8p] - [#55931]) ([xiaomi_aqara docs]) +- Don't cache HomeKit camera stream source from entity ([@xdissent] - [#56136]) ([homekit docs]) +- Use EntityDescription - iqvia ([@bachya] - [#55218]) ([iqvia docs]) +- Fix listener leak in HomeKit on reload ([@bdraco] - [#56143]) ([homekit docs]) +- Prefer more targeted matchers in USB discovery ([@bdraco] - [#56142]) ([usb docs]) +- use fixtures. ([@janiversen] - [#56130]) ([template docs]) +- Changed wording of bond state belief feature from belief to tracked state ([@joshs85] - [#56147]) ([bond docs]) +- Add zeroconf discovery to Hue ([@balloob] - [#55358]) ([hue docs]) +- Fix polling on online Amcrest binary sensor ([@flacjacket] - [#56106]) ([amcrest docs]) +- Update pymodbus fixtures to use autospec ([@janiversen] - [#55686]) ([modbus docs]) +- Switch velbus from python-velbus to velbusaio ([@Cereal2nd] - [#54032]) ([velbus docs]) (breaking-change) +- Add switch support for RPC device ([@thecode] - [#56153]) ([shelly docs]) +- Include end time of statistics data points in API response ([@emontnemery] - [#56063]) ([recorder docs]) +- Add statistics validation ([@emontnemery] - [#56020]) ([recorder docs]) ([history docs]) ([sensor docs]) +- Use list comprehension in onewire entity descriptions ([@epenet] - [#56168]) ([onewire docs]) +- Support hvac mode in melcloud climate.set_temperature service ([@vilppuvuorinen] - [#56082]) ([melcloud docs]) +- Add component for binary sensor groups ([@brianegge] - [#55365]) ([group docs]) (new-platform) +- Netgear config flow ([@starkillerOG] - [#54479]) ([netgear docs]) (breaking-change) +- Update icons for MDI 6 ([@bramkragten] - [#56170]) ([homematic docs]) ([coinbase docs]) ([habitica docs]) ([icloud docs]) ([jewish_calendar docs]) ([ebox docs]) ([fido docs]) +- Do not set assumed state for binary sensor groups ([@emontnemery] - [#56190]) ([group docs]) +- Use entity description and set state class to all System Monitor sensors ([@mib1185] - [#56140]) ([systemmonitor docs]) +- Surepetcare config flow ([@Danielhiversen] - [#56127]) ([surepetcare docs]) +- Add Whirlpool integration ([@abmantis] - [#48346]) ([whirlpool docs]) (new-integration) +- Add description to match TubesZB Coordinators for USB Discovery ([@tube0013] - [#56201]) ([zha docs]) +- Add Config Flow to Modem Caller ID integration ([@tkdrob] - [#46677]) ([modem_callerid docs]) (breaking-change) +- Bump up zha dependencies ([@Adminiuga] - [#56206]) ([zha docs]) +- Clean up Surepetcare binary sensor ([@Danielhiversen] - [#56070]) ([surepetcare docs]) +- Bump codecov/codecov-action from 2.0.3 to 2.1.0 (@dependabot - [#56210]) +- Add service to stop/restart modbus ([@janiversen] - [#55599]) ([modbus docs]) +- Enforce device class for gas and energy sensors used by energy dashboard ([@emontnemery] - [#56218]) ([energy docs]) +- Add Crownstone integration ([@RicArch97] - [#50677]) ([crownstone docs]) (new-integration) +- Add long-term statistics for AirNow sensors ([@bachya] - [#56230]) ([airnow docs]) +- Use EntityDescription - vicare ([@cdce8p] - [#55932]) ([vicare docs]) +- Update template/alarm_control_panel.py to use pytest ([@janiversen] - [#56229]) ([template docs]) +- Add long-term statistics for RainMachine sensors ([@bachya] - [#55418]) ([rainmachine docs]) +- Update template/test_weather.py to use pytest ([@janiversen] - [#56223]) ([template docs]) +- Add long-term statistics for AirVisual sensors ([@bachya] - [#55415]) ([airvisual docs]) +- Add long-term statistics for Flu Near You sensors ([@bachya] - [#55416]) ([flunearyou docs]) +- Update template/test_fan.py to use pytest ([@janiversen] - [#56215]) ([template docs]) +- Bump zeroconf to 0.36.3 ([@bdraco] - [#56233]) ([zeroconf docs]) +- Bump aiohue to 2.6.2 ([@balloob] - [#56234]) ([hue docs]) +- Clean up upnp YAML config ([@StevenLooman] - [#56200]) ([upnp docs]) +- Adjust charging_power unit ([@epenet] - [#56167]) ([renault docs]) +- generic_hygrostat: enable tests ([@Shulyaka] - [#56193]) +- Activate mypy for directv ([@janiversen] - [#55963]) ([directv docs]) +- Deprecate Surepetcare yaml config ([@Danielhiversen] - [#56209]) ([surepetcare docs]) (breaking-change) +- Fix Surepetcare string reference ([@Danielhiversen] - [#56262]) ([surepetcare docs]) +- Bump amcrest version to 1.9.2 ([@flacjacket] - [#56281]) ([amcrest docs]) +- Upgrade pylast from 4.2.0 to 4.2.1 ([@inverse] - [#56015]) ([lastfm docs]) +- Add 5-minute statistics for sensors ([@emontnemery] - [#56006]) ([recorder docs]) ([history docs]) ([sensor docs]) +- Allow smaller step size for input number ([@emontnemery] - [#56211]) ([input_number docs]) +- Delay startup for `cert_expiry` to allow for self checks ([@jjlawren] - [#56266]) ([cert_expiry docs]) +- Fix return value of preset_mode in hive climate ([@Drae] - [#56247]) ([hive docs]) +- Fix Meteoalarm expired alerts ([@koying] - [#56255]) ([meteoalarm docs]) +- Address Switcher late review comments ([@thecode] - [#56264]) ([switcher_kis docs]) +- Activate mypy for gpmdp. ([@janiversen] - [#55967]) ([gpmdp docs]) +- Update template/test_light.py to use pytest ([@janiversen] - [#56300]) ([template docs]) +- Mock out zeroconf in homekit_controller tests ([@emontnemery] - [#56307]) ([homekit_controller docs]) +- Add unique id to amcrest sensors ([@flacjacket] - [#55243]) ([amcrest docs]) +- Bump zeroconf to 0.36.4 ([@bdraco] - [#56314]) ([zeroconf docs]) +- Prevent 3rd party lib from opening sockets in sia tests ([@emontnemery] - [#56325]) ([sia docs]) +- Prevent 3rd party lib from opening sockets in zeroconf tests ([@emontnemery] - [#56324]) ([zeroconf docs]) +- Prevent 3rd party lib from opening sockets in ping tests ([@emontnemery] - [#56329]) ([ping docs]) +- Prevent 3rd party lib from opening sockets in wallbox tests ([@emontnemery] - [#56308]) +- Prevent 3rd party lib from opening sockets in cloud tests ([@emontnemery] - [#56328]) ([cloud docs]) +- Prevent 3rd party lib from opening sockets in ps4 tests ([@emontnemery] - [#56330]) ([ps4 docs]) +- Prevent 3rd party lib from opening sockets in rfxtrx tests ([@emontnemery] - [#56331]) ([rfxtrx docs]) +- Add Shelly RPC sensor and binary sensor platforms ([@thecode] - [#56253]) ([shelly docs]) +- Prevent 3rd party lib from opening sockets in wilight tests ([@emontnemery] - [#56310]) ([wilight docs]) +- Rfxtrx device triggers and actions ([@elupus] - [#47909]) ([rfxtrx docs]) +- Avoid creating sockets in homekit port available tests ([@emontnemery] - [#56342]) ([homekit docs]) +- AutomationTriggerInfo as type in rfxtrx ([@Danielhiversen] - [#56353]) ([rfxtrx docs]) +- Refactor ZHA HVAC thermostat channel ([@Adminiuga] - [#56238]) ([zha docs]) +- Index config entries by domain ([@bdraco] - [#56316]) +- Fix netgear strings ([@milanmeu] - [#56351]) ([netgear docs]) +- Update template/test_init.py to use pytest ([@janiversen] - [#56336]) ([template docs]) +- Bump up ZHA dependencies ([@Adminiuga] - [#56359]) ([zha docs]) +- Strict typing for SamsungTV ([@chemelli74] - [#53585]) ([samsungtv docs]) +- Standardize yeelight exception handling ([@bdraco] - [#56362]) ([yeelight docs]) +- Allow IntegrationNotFound when checking config in safe mode ([@bdraco] - [#56283]) +- Update amcrest version to 1.9.3 ([@flacjacket] - [#56348]) ([amcrest docs]) +- Modbus entity update does not occur until after scan_interval ([@janiversen] - [#56221]) ([modbus docs]) +- Reflect changes to pydeconz v84 ([@Kane610] - [#56361]) ([deconz docs]) +- Do not reload the isy994 on ip change since there is already a reload listener ([@bdraco] - [#54602]) ([isy994 docs]) +- Mock out network.util.async_get_source_ip in tests ([@emontnemery] - [#56339]) ([sonos docs]) ([default_config docs]) +- Prevent 3rd party lib from opening sockets in glances tests ([@emontnemery] - [#56345]) ([glances docs]) +- Activate mypy. ([@janiversen] - [#55965]) ([entur_public_transport docs]) +- Update pylint to 2.11.1 ([@cdce8p] - [#56364]) +- Address late review of samsungtv ([@chemelli74] - [#56382]) ([samsungtv docs]) +- Fix dangerous brackets ([@cdce8p] - [#56384]) ([asuswrt docs]) ([radiotherm docs]) ([screenlogic docs]) +- Surepetcare, service to set pet location ([@Danielhiversen] - [#56198]) ([surepetcare docs]) +- Add Shiba Inu coin to coinbase ([@DrToxic] - [#56304]) ([coinbase docs]) +- Fix creating `cert_expiry` configs during runtime ([@jjlawren] - [#56298]) ([cert_expiry docs]) +- Add config flow to Switchbot ([@RenierM26] - [#50653]) ([switchbot docs]) (new-platform) +- Strictly type sensor.py ([@janiversen] - [#56388]) ([tradfri docs]) +- Strictly type binary_sensor.py. ([@janiversen] - [#56376]) ([modbus docs]) +- deCONZ use siren platform ([@Kane610] - [#56397]) ([deconz docs]) +- Use hass_client_no_auth test fixture in withings tests ([@emontnemery] - [#56337]) ([withings docs]) +- Bump pyTibber to 0.19.1 ([@Danielhiversen] - [#56405]) ([tibber docs]) +- Use hass_client_no_auth test fixture in nest tests ([@emontnemery] - [#56326]) ([nest docs]) +- Add strict typing to tradfri __init__ and switch ([@janiversen] - [#56002]) ([tradfri docs]) +- Use EntityDescription - august ([@cdce8p] - [#56395]) ([august docs]) +- Use assignment expressions 01 ([@cdce8p] - [#56394]) +- Increase Lyric update interval to 300 seconds ([@timmo001] - [#56393]) ([lyric docs]) (breaking-change) +- Improve Surepetcare set_pet_location service ([@Danielhiversen] - [#56401]) ([surepetcare docs]) +- Bump zeroconf to 0.36.5 ([@bdraco] - [#56413]) ([zeroconf docs]) +- Prevent 3rd party lib from opening sockets in smhi tests ([@emontnemery] - [#56335]) ([smhi docs]) +- Prevent 3rd party lib from opening sockets in samsungtv tests ([@emontnemery] - [#56334]) ([samsungtv docs]) +- Remove leftover debug prints in tests ([@bdraco] - [#56409]) ([zeroconf docs]) ([homekit docs]) +- Use `_attr_*` for the GitHub integration ([@ludeeus] - [#56419]) ([github docs]) +- Use attrs in Xiaomi Miio humidifier platform ([@bieniu] - [#56371]) ([xiaomi_miio docs]) +- Add tests for Rituals Perfume Genie number, select and binary_sensor platforms ([@milanmeu] - [#55224]) ([rituals_perfume_genie docs]) +- Surepetcare, strict typing ([@Danielhiversen] - [#56425]) ([surepetcare docs]) +- Bump zeroconf to 0.36.6 ([@bdraco] - [#56438]) ([zeroconf docs]) +- restore float and not string ([@dgomes] - [#56406]) ([utility_meter docs]) +- Strictly type sensor.py. ([@janiversen] - [#56377]) ([modbus docs]) +- Add missing generic-x86-64 image ([@mbo18] - [#56424]) ([version docs]) +- ESPHome Noise Transport Encryption support ([@OttoWinter] - [#56216]) ([esphome docs]) +- Prevent opening of sockets in onboarding tests ([@emontnemery] - [#56443]) ([onboarding docs]) +- Make tradfri base_class.py strictly typed ([@janiversen] - [#56341]) ([tradfri docs]) +- Rework Xiaomi Miio fan platform ([@bieniu] - [#55846]) ([xiaomi_miio docs]) (breaking-change) +- Strictly type modbus base_platform.py ([@janiversen] - [#56343]) ([modbus docs]) +- Prevent opening sockets in panasonic_viera tests ([@emontnemery] - [#56441]) ([panasonic_viera docs]) +- Improve statistics validation ([@emontnemery] - [#56457]) ([recorder docs]) ([sensor docs]) +- Use EntityDescription - flume ([@cdce8p] - [#56433]) ([flume docs]) +- Strictly type modbus.py. ([@janiversen] - [#56375]) ([modbus docs]) +- Improve yeelight stability by moving timeout handling to upstream library ([@bdraco] - [#56432]) ([yeelight docs]) +- Improve Shelly light application/consumption type handling ([@thecode] - [#56461]) ([shelly docs]) +- Strictly type tradfri light.py ([@janiversen] - [#56389]) ([tradfri docs]) +- Add Shelly RPC device trigger and logbook platforms ([@thecode] - [#56428]) ([shelly docs]) +- Remove xiaomi_aqara entity_description property ([@cdce8p] - [#56456]) ([xiaomi_aqara docs]) +- Fix recorder Oracle DB models ([@mciupak] - [#55564]) ([recorder docs]) +- Add WattTime integration ([@bachya] - [#56149]) ([watttime docs]) (new-integration) +- Deprecate passing template to notify ([@balloob] - [#56069]) ([notify docs]) (breaking-change) +- Correct Alexa scene activation ([@elliotmoso] - [#56469]) ([alexa docs]) +- Support unicode in SMS messages ([@ocalvo] - [#56468]) ([sms docs]) +- Upgrade cryptography to 3.4.8 ([@pvizeli] - [#56481]) +- Strictly type tradfri cover.py ([@janiversen] - [#56390]) ([tradfri docs]) +- Strictly type modbus __init__.py, validator.py ([@janiversen] - [#56378]) ([modbus docs]) +- typo ([@jcgoette] - [#56477]) +- Strictly type tradfri config_flow.py ([@janiversen] - [#56391]) ([tradfri docs]) +- Add cover platform to switchbot ([@RenierM26] - [#56414]) ([switchbot docs]) (new-platform) +- Remove redundant aiohttp response status=200 kwargs ([@scop] - [#56417]) +- Prevent 3rd party lib from opening sockets in google_assistant tests ([@emontnemery] - [#56346]) ([google_assistant docs]) +- Avoid deadlock on shutdown when a task is shielded from cancelation ([@bdraco] - [#56499]) +- raise PlatformNotReady when speakers unreachable ([@basnijholt] - [#56508]) ([kef docs]) +- Use EntityDescription - efergy ([@tkdrob] - [#54210]) ([efergy docs]) +- Optimise requests to the tado servers ([@niklasastrom] - [#56261]) ([tado docs]) +- Add extra power meter for YouLess ([@roelvanderark] - [#56528]) ([youless docs]) +- Split Netatmo camera persons by home ([@cgtobi] - [#55598]) ([netatmo docs]) +- Convert image_processing tests to pytest ([@emontnemery] - [#56451]) ([image_processing docs]) +- Simplify cloud request connection handling ([@balloob] - [#56243]) ([cloud docs]) +- Allow camera usage with HA cloud ([@cgtobi] - [#56533]) ([netatmo docs]) +- ZHA channel ZCL attributes initialization ([@Adminiuga] - [#56476]) ([zha docs]) +- Fix flaky srp energy test ([@balloob] - [#56536]) ([srp_energy docs]) +- Prefer HTTPStatus over int in HA view JSON functions ([@scop] - [#56504]) +- Minor refactoring of periodic statistics ([@emontnemery] - [#56492]) ([recorder docs]) ([sensor docs]) +- Register Google assistant energy storage trait ([@Sian-Lee-SA] - [#56520]) ([google_assistant docs]) +- Fix validation of cost entities for energy dashboard ([@emontnemery] - [#56219]) ([energy docs]) +- Allow confirming local push notifications ([@balloob] - [#54947]) ([websocket_api docs]) ([mobile_app docs]) +- Bump frontend to 20210922.0 ([@balloob] - [#56546]) ([frontend docs]) +- Energy validation: Require last_reset attribute to be set for state_class measurement energy and cost sensors ([@emontnemery] - [#56254]) ([energy docs]) +- Address Crownstone review comments ([@RicArch97] - [#56485]) ([crownstone docs]) +- Add comments to recorder statistics code ([@emontnemery] - [#56545]) ([recorder docs]) +- Update zeroconf to 0.36.7 ([@bdraco] - [#56553]) ([zeroconf docs]) +- Upgrade PyTurboJPEG to 1.6.1 ([@frenck] - [#56571]) ([camera docs]) +- Upgrade pre-commit to 2.14.1 ([@frenck] - [#56569]) +- Upgrade watchdog to 2.1.5 ([@frenck] - [#56572]) ([folder_watcher docs]) +- Upgrade colorlog to 6.4.1 ([@frenck] - [#56573]) +- Bump aiohomekit to 0.6.3 ([@Jc2k] - [#56574]) ([homekit_controller docs]) +- Upgrade black to 21.9b0 ([@frenck] - [#56575]) +- Use EntityDescription - kraken ([@cdce8p] - [#56436]) ([kraken docs]) +- Add long-term statistics for OpenUV sensors ([@bachya] - [#55417]) ([openuv docs]) +- Enable strict typing for the tautulli integration ([@ludeeus] - [#55448]) ([tautulli docs]) +- Use EntityDescription - solaredge_local ([@cdce8p] - [#56434]) ([solaredge_local docs]) +- strictly type: fan.py, light.py, switch.py. ([@janiversen] - [#56379]) ([modbus docs]) +- Activate mypy for Vallox ([@andre-richter] - [#55874]) ([vallox docs]) +- Create but disable-by-default RPM and GPM sensors ([@dieselrabbit] - [#56549]) ([screenlogic docs]) +- Upgrade apprise to 0.9.5.1 ([@frenck] - [#56577]) +- Use EntityDescription - fitbit ([@cdce8p] - [#55925]) ([fitbit docs]) +- Add date device_class to Twente Milieu sensors ([@frenck] - [#56579]) ([twentemilieu docs]) +- Upgrade debugpy to 1.4.3 ([@frenck] - [#56576]) ([debugpy docs]) +- Remove config for `Speedtest.net` ([@engrbm87] - [#55642]) ([speedtestdotnet docs]) (breaking-change) +- Add Surepetcare entity class ([@Danielhiversen] - [#56430]) ([surepetcare docs]) +- Airthings ([@Danielhiversen] - [#56578]) ([airthings docs]) (new-integration) +- Add sensor to switchbot platform ([@RenierM26] - [#56416]) ([switchbot docs]) (new-platform) +- Assume Fritz!Smarthome device as unavailable ([@mib1185] - [#56542]) ([fritzbox docs]) +- Convert Nanoleaf integration to use Async library aionanoleaf ([@milanmeu] - [#56548]) ([nanoleaf docs]) +- Add binary_sensor to switchbot ([@RenierM26] - [#56415]) ([switchbot docs]) (new-platform) +- Alexa fix Fan support and cleanup ([@jbouwh] - [#56053]) ([alexa docs]) +- Rework Tractive integration init ([@bieniu] - [#55741]) ([tractive docs]) +- Convert last_reset timestamps to UTC ([@emontnemery] - [#56561]) ([sensor docs]) +- Add migration for 5-minute statistics ([@emontnemery] - [#56585]) ([recorder docs]) +- Add device info to Surepetcare ([@Danielhiversen] - [#56600]) ([surepetcare docs]) +- Upgrade pytest to 6.2.5 ([@frenck] - [#56603]) +- Move efergy api to pyefergy ([@tkdrob] - [#56594]) ([efergy docs]) +- Bump velbus-aio to 2021.9.4 ([@Cereal2nd] - [#56478]) ([velbus docs]) +- Set Switchbot _attr_is_closed on init ([@RenierM26] - [#56611]) ([switchbot docs]) +- update SIA package ([@eavanvalkenburg] - [#56615]) ([sia docs]) +- Bump goalzero to 0.2.0 ([@tkdrob] - [#56613]) ([goalzero docs]) +- Add ability to re-auth Notion ([@bachya] - [#55616]) ([notion docs]) +- Add `state_class` and use `SensorEntityDescription` for comfoconnect ([@michaelarnauts] - [#54066]) ([comfoconnect docs]) +- Reuse zwave_js device when replacing removed node with same node ([@raman325] - [#56599]) ([zwave_js docs]) +- Bump fjäråskupan to 1.0.1 ([@elupus] - [#56628]) ([fjaraskupan docs]) +- Use SurePetcareEntity for surepetcare binary sensor ([@Danielhiversen] - [#56601]) ([surepetcare docs]) +- Upgrade pipdeptree to 2.1.0 ([@frenck] - [#56637]) +- Upgrade pyupgrade to v2.27.0 ([@frenck] - [#56638]) +- Add state_class_measurement to nws ([@MatthewFlamm] - [#56629]) ([nws docs]) +- Update python-smarttub to 0.0.27 ([@mdz] - [#56626]) ([smarttub docs]) +- Upgrade pytest-xdist to 2.4.0 ([@frenck] - [#56606]) +- Upgrade numpy to 1.21.2 ([@frenck] - [#56640]) ([opencv docs]) ([tensorflow docs]) ([trend docs]) ([iqvia docs]) ([compensation docs]) +- Ignore config directory symlink in development ([@frenck] - [#56639]) +- Simplify state update for Flu Near You ([@bachya] - [#56650]) ([flunearyou docs]) +- Fix state_class for deCONZ power sensors ([@Kane610] - [#56586]) ([deconz docs]) +- Revert "Simplify state update for Flu Near You (#56650)" ([@bachya] - [#56662]) ([flunearyou docs]) +- Simplify native value and attributes properties for Flu Near You ([@bachya] - [#56665]) ([flunearyou docs]) +- Correct the device name for Airthings ([@Danielhiversen] - [#56655]) ([airthings docs]) +- Upgrade ciso8601 to 2.2.0 ([@fabaff] - [#56678]) +- Upgrade pre-commit to 2.15.0 ([@frenck] - [#56677]) +- Upgrade emoji to 1.5.0 ([@fabaff] - [#56684]) ([mobile_app docs]) +- Use EntityDescription - sht31 ([@cdce8p] - [#56435]) ([sht31 docs]) +- Expose the ability to move an entity/device between config entries ([@bdraco] - [#56661]) +- Avoid enabling ipv6 dual stack for zeroconf on unsupported platforms ([@bdraco] - [#56584]) ([zeroconf docs]) +- Ensure yeelight can be unloaded when device is offline ([@bdraco] - [#56464]) ([yeelight docs]) +- Upgrade voluptuous to 0.12.2 ([@fabaff] - [#56680]) +- Add support for multilevel switch CC select entities ([@raman325] - [#56656]) ([zwave_js docs]) +- Implement retry and backoff strategy for requirements install ([@bdraco] - [#56580]) +- Optimize SSDP matching ([@bdraco] - [#56622]) ([ssdp docs]) +- Ensure sonos always gets ssdp callbacks from searches ([@bdraco] - [#56591]) ([ssdp docs]) +- Drop defusedxml dep from ssdp manifest ([@bdraco] - [#56699]) ([ssdp docs]) +- Set certifi to >=2021.5.30 ([@fabaff] - [#56679]) +- Upgrade requests to 2.26.0 ([@fabaff] - [#56683]) +- Upgrade discord.py to 1.7.3 ([@fabaff] - [#56686]) ([discord docs]) +- Upgrade TwitterAPI to 2.7.5 ([@fabaff] - [#56687]) ([twitter docs]) +- Upgrade sendgrid to 6.8.2 ([@fabaff] - [#56688]) ([sendgrid docs]) +- Avoid checking if a package is installed if it already failed ([@bdraco] - [#56698]) +- Bump home-assistant/builder from 2021.07.0 to 2021.09.0 (@dependabot - [#56704]) +- SSDP starts config flow only for alive devices ([@chishm] - [#56551]) ([ssdp docs]) +- Upgrade praw to 7.4.0 ([@fabaff] - [#56682]) ([reddit docs]) +- Add is_number template filter and function ([@emontnemery] - [#56705]) +- Upgrade sentry-sdk to 1.4.1 ([@frenck] - [#56707]) +- Simplify native value property for WattTime ([@bachya] - [#56664]) ([watttime docs]) +- Don't round in energy cost sensor ([@emontnemery] - [#56258]) ([energy docs]) +- Remove UniFi config entry reference from device when removing last entity of said device ([@Kane610] - [#56501]) ([unifi docs]) +- Improve Sonos handling of TuneIn stations ([@jjlawren] - [#56479]) ([sonos docs]) +- Don't reset meter when last_reset is set to None ([@emontnemery] - [#56609]) ([sensor docs]) +- Add current and latest firmware info to Synology_dsm ([@chemelli74] - [#56460]) ([synology_dsm docs]) +- Strictly type modbus climate.py ([@janiversen] - [#56380]) ([modbus docs]) +- Strictly type modbus cover.py ([@janiversen] - [#56381]) ([modbus docs]) +- Remove unnecessary extra attribute from Pi-hole sensors ([@mib1185] - [#56076]) ([pi_hole docs]) (breaking-change) +- Use EntityDescription - tellduslive ([@cdce8p] - [#55928]) ([tellduslive docs]) +- Add node sensor status icons ([@Mariusthvdb] - [#56137]) ([zwave_js docs]) +- Add more sensor types for airthings devices ([@k1rd3rf] - [#56706]) +- Use EntityDescription - hydrawise ([@cdce8p] - [#55924]) ([hydrawise docs]) +- Add UPNP device connection for Sonos ([@chishm] - [#56702]) ([sonos docs]) +- Upgrade lupupy to 0.0.21 ([@frenck] - [#56636]) ([lupusec docs]) +- Minor cleanup and test coverage improvement for MQTT ([@emontnemery] - [#55265]) ([mqtt docs]) +- Add state_class measurements in wiffi integration ([@mampfes] - [#54279]) ([wiffi docs]) +- Improve migration to recorder schema version 21 ([@emontnemery] - [#56204]) ([recorder docs]) +- Use EntityDescription - toon ([@cdce8p] - [#55035]) ([toon docs]) +- Use EntityDescription - meteo_france ([@cdce8p] - [#55677]) +- Use entity attributes for vizio integration ([@raman325] - [#56093]) ([vizio docs]) +- Use EntityDescription - daikin ([@cdce8p] - [#55929]) ([daikin docs]) +- Patch coinbase ([@bastgau] - [#56426]) ([coinbase docs]) +- Bump elkm1-lib to 1.0.0 ([@hungnguyenm] - [#56703]) ([elkm1 docs]) +- Rework TPLink integration to use python-kasa ([@rytilahti] - [#56701]) ([tplink docs]) (breaking-change) +- Discover Switchbot MAC in config flow ([@RenierM26] - [#56616]) ([switchbot docs]) +- Config-flow for DLNA-DMR integration ([@chishm] - [#55267]) ([discovery docs]) ([dlna_dmr docs]) (breaking-change) +- Add usb discovery for tubeszb ch340B serial devices ([@tube0013] - [#56719]) ([zha docs]) +- Add WS API for removing statistics for a list of statistic_ids ([@emontnemery] - [#55078]) ([recorder docs]) ([history docs]) +- Define `unit_of_measurement` of all `utility_meter` sensors on HA start ([@dgomes] - [#56112]) ([utility_meter docs]) +- Add WS API for updating unit_of_measurement in statistics metadata ([@emontnemery] - [#56184]) ([recorder docs]) +- Add dhcp support for TPLink KL60 and EP40 ([@bdraco] - [#56726]) ([tplink docs]) +- Add api to the network integration to get ipv4 broadcast addresses ([@bdraco] - [#56722]) ([network docs]) +- Amberelectric ([@madpilot] - [#56448]) ([amberelectric docs]) (new-integration) +- Activate fault handler ([@ocalvo] - [#56550]) +- Tweak list_statistic_ids ([@emontnemery] - [#55845]) ([recorder docs]) ([sensor docs]) +- Add support for zwave_js device actions ([@raman325] - [#53038]) ([zwave_js docs]) +- Bump dessant/lock-threads from 2.1.2 to 3 (@dependabot - [#56727]) +- Bump WazeRouteCalculator to 0.13 ([@regevbr] - [#56718]) ([waze_travel_time docs]) +- Inherit Filter sensor state_class from source sensor ([@dgomes] - [#56407]) ([filter docs]) +- Refactor Sonos alarms and favorites updating ([@jjlawren] - [#55529]) ([sonos docs]) +- Add binary sensor platform to Tractive integration ([@bieniu] - [#56635]) ([tractive docs]) (new-platform) +- Update YouLess library for support for PVOutput firmware ([@gjong] - [#55784]) ([youless docs]) +- Add raid monitoring to glances ([@Adi146] - [#56623]) ([glances docs]) +- Adjust lock configuration ([@ludeeus] - [#56731]) +- Add support for pedestal MIOT fans to Xiaomi Miio integration ([@bieniu] - [#56555]) ([xiaomi_miio docs]) +- Add network support to tplink for discovery across subnets ([@bdraco] - [#56721]) ([tplink docs]) +- Explictly close the TPLink SmartDevice protocol on unload ([@bdraco] - [#56743]) ([tplink docs]) +- Clean up Nanoleaf ([@milanmeu] - [#56732]) ([nanoleaf docs]) +- Add proper S2 support for adding zwave_js nodes ([@raman325] - [#56516]) ([zwave_js docs]) +- Use NamedTuple for intesishome swing settings ([@cdce8p] - [#56752]) ([intesishome docs]) +- Use NamedTuple for esphome service metadata ([@cdce8p] - [#56754]) ([esphome docs]) +- Use NamedTuple for discovery service details ([@cdce8p] - [#56751]) ([discovery docs]) +- Use NamedTuple for xbox media type details ([@cdce8p] - [#56753]) ([xbox docs]) +- Provide most media metadata in DlnaDmrEntity ([@chishm] - [#56728]) ([dlna_dmr docs]) +- Add coverage to verify tplink unique ids ([@bdraco] - [#56746]) ([tplink docs]) +- Adding price spike binary sensor to the Amber electric integration ([@madpilot] - [#56736]) ([amberelectric docs]) +- Add zeroconf support for yeelight ([@joaophi] - [#56758]) ([yeelight docs]) +- Fritz honor sys option pref_disable_new_entities ([@chemelli74] - [#56740]) ([fritz docs]) +- Fix cover group to handle unknown state properly ([@regevbr] - [#56739]) ([group docs]) +- Remove timeout for backup services ([@ludeeus] - [#56763]) ([hassio docs]) +- Upgrade holidays to 0.11.3 ([@fabaff] - [#56762]) ([workday docs]) +- Upgrade beautifulsoup4 to 4.10.0 ([@fabaff] - [#56764]) ([scrape docs]) +- Tweak DB migration to schema version 21 ([@emontnemery] - [#56767]) ([recorder docs]) +- Add missing voltage sensor in Shelly integration ([@bieniu] - [#56773]) ([shelly docs]) +- Fix energy validation when not tracking costs ([@frenck] - [#56768]) ([energy docs]) +- Import Callable from collections.abc (2) ([@cdce8p] - [#56776]) +- Set strict typing for modbus. ([@janiversen] - [#56779]) +- Import Callable from collections.abc (4) ([@cdce8p] - [#56778]) +- Import Callable from collections.abc (3) ([@cdce8p] - [#56777]) +- Import Callable from collections.abc (1) ([@cdce8p] - [#56775]) +- Add code_format to template alarm ([@avee87] - [#56700]) ([template docs]) +- Optimize _get_states_with_session ([@emontnemery] - [#56734]) ([recorder docs]) +- Migrate Vallox to new fan entity model ([@andre-richter] - [#56663]) ([vallox docs]) +- Remove automatic splitting of net meters from statistics ([@emontnemery] - [#56772]) ([recorder docs]) ([history docs]) ([sensor docs]) +- Open garage, add config flow ([@Danielhiversen] - [#55290]) ([opengarage docs]) +- Add zwave to zwave_js migration ([@MartinHjelmare] - [#56159]) ([zwave docs]) ([ozw docs]) ([zwave_js docs]) +- Add Surepetcare locks ([@Danielhiversen] - [#56396]) ([surepetcare docs]) (new-platform) +- Add "Summation Delivered" Sensor for SmartEnergy metering ZHA channel ([@Adminiuga] - [#56666]) ([zha docs]) +- Bump aiodiscover to 1.4.4 to fix mac matching with leading 0s ([@bdraco] - [#56791]) ([dhcp docs]) +- Add long-term statistics for Guardian sensors ([@bachya] - [#55413]) ([guardian docs]) +- Warn if template functions fail and no default is specified ([@emontnemery] - [#56453]) (breaking-change) +- Plex media browser improvements ([@jjlawren] - [#56312]) ([plex docs]) +- Minor cleanup of recorder statistics code ([@emontnemery] - [#55339]) ([recorder docs]) +- Wait for yeelight internal state to change before update after on/off ([@bdraco] - [#56795]) ([yeelight docs]) +- Add switch platform to Tractive integration ([@bieniu] - [#55517]) ([tractive docs]) (new-platform) +- Use isinstance to verify class in deCONZ integration ([@Kane610] - [#56794]) ([deconz docs]) +- Bump zwave-js-server-python to 0.31.1 ([@raman325] - [#56517]) ([zwave_js docs]) +- Fix honeywell connection error ([@rdfurman] - [#56757]) ([honeywell docs]) +- Bump holidays to 0.11.3.1 ([@MartinHjelmare] - [#56804]) ([workday docs]) +- Fallback to state machine in statistics ([@emontnemery] - [#56785]) ([sensor docs]) +- Manage s2 keys in zwave_js ([@MartinHjelmare] - [#56783]) ([zwave_js docs]) +- Fix zwave_js config flow import step ([@MartinHjelmare] - [#56808]) ([zwave_js docs]) +- Get the currency from the api ([@joaophi] - [#56806]) ([growatt_server docs]) +- Add latest added media as Plex library sensor attribute ([@jjlawren] - [#56235]) ([plex docs]) +- Switch to using constants wherever possible in zwave_js ([@raman325] - [#56518]) ([zwave_js docs]) +- Bump ZHA quirks module to 0.0.62 ([@dmulcahey] - [#56809]) ([zha docs]) +- Fix dhcp discovery matching due to deferred imports ([@bdraco] - [#56814]) ([dhcp docs]) +- Add device_info to `Speedtestdotnet` and some code cleanup ([@engrbm87] - [#56612]) ([speedtestdotnet docs]) +- Use EntityDescription - smappee ([@cdce8p] - [#56747]) ([smappee docs]) +- Add keyboard event type to keyboard_remote ([@lanrat] - [#56668]) ([keyboard_remote docs]) +- Handle UpnpError exceptions when getting WAN status and external IP address ([@ehendrix23] - [#56744]) ([upnp docs]) +- Fritz new binary sensor for link and firmware status + code cleanup ([@chemelli74] - [#55446]) ([fritz docs]) (breaking-change) +- Add long-term statistics for Ambient PWS sensors ([@bachya] - [#55412]) ([ambient_station docs]) +- Use entity descriptions for sonarr ([@ctalkington] - [#55818]) ([sonarr docs]) +- Add some huawei_lte sensor state classifications ([@scop] - [#55601]) ([huawei_lte docs]) +- Change state_class so older Envoys can use Energy Dashboard ([@gtdiehl] - [#55383]) ([enphase_envoy docs]) +- Fix Onvif PTZ for Imou cameras ([@timn] - [#56592]) ([onvif docs]) +- Add DC voltage and current to Kostal inverter ([@Mas2112] - [#54878]) ([kostal_plenticore docs]) +- Correct unit of measurement for qbittorrent data rate sensors ([@acshef] - [#55758]) ([qbittorrent docs]) +- Add Fritz!DECT 440 humidity sensor ([@jloehr] - [#54597]) ([fritzbox docs]) +- Tuya v2 Integration Release ([@zlinoliver] - [#56820]) ([tuya docs]) (breaking-change) +- Remove dead code from ESPHome light entity ([@oxan] - [#55519]) ([esphome docs]) +- Rename var to compliant name in August integration ([@chemelli74] - [#56812]) ([august docs]) +- Fix hue turning on eWeLink switch ([@logan893] - [#56318]) ([hue docs]) +- Fix OVO Energy reporting consumption as cost ([@deosrc] - [#55856]) ([ovo_energy docs]) +- Remove webostv service description github link ([@FunctionalHacker] - [#53502]) ([webostv docs]) +- Update viaggiatreno component due to API changes ([@bluviolin] - [#56463]) ([viaggiatreno docs]) +- Add Kraken delay after first update to avoid limit ([@eifinger] - [#55736]) ([kraken docs]) +- Add resolution to Amcrest camera unique id ([@flacjacket] - [#56207]) ([amcrest docs]) +- Adjust state class of solaredge lifetime energy sensor ([@emontnemery] - [#56825]) ([solaredge docs]) +- Adjust state class of growatt_server lifetime energy sensors ([@emontnemery] - [#56826]) ([growatt_server docs]) +- Deprecated open garage yaml config ([@Danielhiversen] - [#56829]) ([opengarage docs]) (breaking-change) +- Bump surepy to 0.7.2 ([@Danielhiversen] - [#56828]) ([surepetcare docs]) +- Service to remove clients from UniFi Controller ([@Kane610] - [#56717]) ([unifi docs]) +- Update frontend to 20210930.0 ([@bramkragten] - [#56827]) ([frontend docs]) +- Correctly handle offline and unsupported printers during setup ([@nielstron] - [#55894]) ([syncthru docs]) +- Warn if total_increasing sensor has negative states ([@emontnemery] - [#56564]) ([sensor docs]) +- Bump Mill library ([@Danielhiversen] - [#56833]) ([mill docs]) +- Surepetcare reauthorize ([@Danielhiversen] - [#56402]) ([surepetcare docs]) +- Optimize statistics generation ([@emontnemery] - [#56821]) ([recorder docs]) ([history docs]) ([sensor docs]) +- Add locking state to surepetcare locks ([@Danielhiversen] - [#56830]) ([surepetcare docs]) +- Add strings for new zwave_js config flow keys ([@raman325] - [#56844]) ([zwave_js docs]) (beta fix) +- Upgrade aionanoleaf to 0.0.2 ([@milanmeu] - [#56845]) ([nanoleaf docs]) (beta fix) +- Correct database migration to schema version 22 ([@emontnemery] - [#56848]) ([recorder docs]) (beta fix) +- Adjust state class of solarlog yield and consumption sensors ([@emontnemery] - [#56824]) ([solarlog docs]) (beta fix) +- Handle missing serial extended parameters in crownstone ([@RicArch97] - [#56864]) ([crownstone docs]) (beta fix) +- Opengarage bug fix ([@Danielhiversen] - [#56869]) ([opengarage docs]) (beta fix) +- Fix check_control_message short description ([@cdce8p] - [#56876]) ([bmw_connected_drive docs]) (beta fix) +- Bump aioesphomeapi from 9.1.0 to 9.1.2 ([@OttoWinter] - [#56879]) ([esphome docs]) (beta fix) +- Fix bmw_connected_drive battery icon ([@cdce8p] - [#56884]) ([bmw_connected_drive docs]) (beta fix) +- Revert fritz pref_disable_new_entities handling ([@chemelli74] - [#56891]) ([fritz docs]) (beta fix) +- Use native unit of measurement in deCONZ sensors ([@Kane610] - [#56897]) ([deconz docs]) (beta fix) +- CLIPGenericFlag should be deCONZ sensor not binary sensor ([@Kane610] - [#56901]) ([deconz docs]) (beta fix) +- Fix vicare binary sensor ([@crazyfx1] - [#56912]) ([vicare docs]) (beta fix) +- Set unique id while SSDP discovery of Synology DSM ([@mib1185] - [#56914]) ([synology_dsm docs]) (beta fix) +- Address beta review comments for WattTime ([@bachya] - [#56919]) ([watttime docs]) (beta fix) +- Bump pynws: fix unit code bug ([@MatthewFlamm] - [#56923]) ([nws docs]) (beta fix) +- Fix Switchbot unsupported SB types ([@RenierM26] - [#56928]) ([switchbot docs]) (beta fix) +- Fix `Unable to serialize to JSON` error in Xiaomi Miio ([@bieniu] - [#56929]) ([xiaomi_miio docs]) (beta fix) +- Add DHCP support for TPLink KL430, KP115 ([@bdraco] - [#56932]) ([tplink docs]) (beta fix) +- Update pypoint to use v5 of backend API ([@fredrike] - [#56934]) ([point docs]) (breaking-change) (beta fix) +- Bump PyFlume to 0.6.5 to fix compat with new JWT ([@bdraco] - [#56936]) ([flume docs]) (beta fix) +- Add sleep_period to log for easier debugging ([@chemelli74] - [#56949]) ([shelly docs]) (beta fix) +- Add dhcp discovery for TPLink EP10 ([@bdraco] - [#56955]) ([tplink docs]) (beta fix) +- Update frontend to 20211002.0 ([@bramkragten] - [#56963]) ([frontend docs]) (beta fix) +- Disable discovery for dlna_dmr until it is more selective ([@chishm] - [#56950]) ([dlna_dmr docs]) (beta fix) +- Fix Tuya v2 fan percentage ([@zlinoliver] - [#56954]) ([tuya docs]) (beta fix) +- Fix yeelight state when controlled outside of Home Assistant ([@bdraco] - [#56964]) ([yeelight docs]) (beta fix) +- Fix incorrect handling of hass.data in WattTime setup ([@bachya] - [#56971]) ([watttime docs]) (beta fix) +- Bump aioshelly to 1.0.2 ([@thecode] - [#56980]) ([shelly docs]) (beta fix) +- Fix upnp invalid key in ssdp discovery_info ([@StevenLooman] - [#56986]) ([upnp docs]) (beta fix) +- Bump async-upnp-client to 0.22.5 ([@StevenLooman] - [#56989]) ([upnp docs]) ([yeelight docs]) ([dlna_dmr docs]) ([ssdp docs]) (beta fix) +- Use pycarwings2.12 for Nissan Leaf integration ([@filcole] - [#56996]) ([nissan_leaf docs]) (beta fix) +- Round tplink energy sensors to prevent insignificant updates ([@bdraco] - [#56999]) ([tplink docs]) (beta fix) +- Bump yeelight to 0.7.6 ([@bdraco] - [#57009]) ([yeelight docs]) (beta fix) +- Ignore utility_meter restore state if state is invalid ([@dgomes] - [#57010]) ([utility_meter docs]) (beta fix) +- Bump pyatmo to v6.1.0 ([@cgtobi] - [#57014]) ([netatmo docs]) (beta fix) +- Meteofrance fix #56975 ([@oncleben31] - [#57016]) ([meteo_france docs]) (beta fix) +- Fix camera tests ([@cgtobi] - [#57020]) ([netatmo docs]) (beta fix) +- Add DHCP support for TPLink KP400 ([@bdraco] - [#57023]) ([tplink docs]) (beta fix) +- Shorten album titles when browsing artist ([@jjlawren] - [#57027]) ([plex docs]) (beta fix) +- Evict purged states from recorder's old_state cache ([@emontnemery] - [#56877]) ([recorder docs]) (beta fix) +- Fix Tuya v2 login issue ([@zlinoliver] - [#56973]) ([tuya docs]) (beta fix) +- Mark auth voluptuous schema fields as required ([@balloob] - [#57003]) (beta fix) +- Bump zwave-js-server-python to 0.31.2 ([@raman325] - [#57007]) ([zwave_js docs]) (beta fix) +- Universal media player: consider unknown as inactive child state ([@koying] - [#57029]) ([universal docs]) (beta fix) +- ESPHome fix zeroconf add_listener issue ([@OttoWinter] - [#57031]) ([esphome docs]) (beta fix) +- Bump aioesphomeapi from 9.1.2 to 9.1.4 ([@OttoWinter] - [#57036]) ([esphome docs]) (beta fix) +- Prevent opening of sockets in watttime tests ([@emontnemery] - [#57040]) ([watttime docs]) (beta fix) +- Rewrite tuya config flow ([@ludeeus] - [#57043]) ([tuya docs]) (beta fix) +- Improve sensor statistics validation ([@emontnemery] - [#56892]) ([sensor docs]) (beta fix) +- Update esphome reconnect logic to use newer RecordUpdateListener logic ([@bdraco] - [#57057]) ([esphome docs]) (beta fix) +- Fix: Shelly Gen2 - filter unsupported sensors ([@thecode] - [#57065]) ([shelly docs]) (beta fix) +- Update frontend to 20211004.0 ([@bramkragten] - [#57073]) ([frontend docs]) (beta fix) +- Fix energy gas price validation ([@balloob] - [#57075]) ([energy docs]) (beta fix) +- Fix Growatt login invalid auth response ([@indykoning] - [#57071]) ([growatt_server docs]) (beta fix) +- Prevent Tuya from accidentally logging credentials in debug mode ([@frenck] - [#57100]) ([tuya docs]) (beta fix) +- Small code styling tweaks for Tuya ([@frenck] - [#57102]) ([tuya docs]) (beta fix) +- Remove Python shebang line from Tuya integration files ([@frenck] - [#57103]) ([tuya docs]) (beta fix) +- Bump aioesphomeapi from 9.1.4 to 9.1.5 ([@OttoWinter] - [#57106]) ([esphome docs]) (beta fix) +- Update Tuya code owners ([@balloob] - [#57078]) ([tuya docs]) (beta fix) +- Bump tuya-iot-py-sdk to 0.5.0 ([@frenck] - [#57110]) ([tuya docs]) (beta fix) +- Update tesla_powerwall to 0.3.11 ([@jrester] - [#57112]) ([powerwall docs]) (beta fix) +- Bump aiohue to 2.6.3 ([@balloob] - [#57125]) ([hue docs]) (beta fix) +- Fix yeelight connection when bulb stops responding to SSDP ([@bdraco] - [#57138]) ([yeelight docs]) (beta fix) +- Reinstate asking for country in Tuya flow ([@balloob] - [#57142]) ([tuya docs]) (beta fix) +- Bump zwave-js-server-python to 0.31.3 ([@raman325] - [#57143]) ([zwave_js docs]) (beta fix) +- Updated amberelectic attributes to reflect unit change to $/kWh ([@mindmelting] - [#57109]) ([amberelectric docs]) (beta fix) +- Fix Fritz shutdown race condition ([@chemelli74] - [#57148]) ([fritz docs]) (beta fix) +- Fix SamsungTV shutdown race condition ([@chemelli74] - [#57149]) ([samsungtv docs]) (beta fix) +- Guard upnp create device ([@balloob] - [#57156]) ([upnp docs]) (beta fix) +- Bump netdisco to 3.0.0 ([@balloob] - [#56903]) ([discovery docs]) (beta fix) + +{% enddetails %} + +[#46677]: https://github.com/home-assistant/core/pull/46677 +[#47909]: https://github.com/home-assistant/core/pull/47909 +[#48346]: https://github.com/home-assistant/core/pull/48346 +[#49608]: https://github.com/home-assistant/core/pull/49608 +[#50653]: https://github.com/home-assistant/core/pull/50653 +[#50677]: https://github.com/home-assistant/core/pull/50677 +[#52766]: https://github.com/home-assistant/core/pull/52766 +[#53038]: https://github.com/home-assistant/core/pull/53038 +[#53285]: https://github.com/home-assistant/core/pull/53285 +[#53368]: https://github.com/home-assistant/core/pull/53368 +[#53408]: https://github.com/home-assistant/core/pull/53408 +[#53502]: https://github.com/home-assistant/core/pull/53502 +[#53525]: https://github.com/home-assistant/core/pull/53525 +[#53585]: https://github.com/home-assistant/core/pull/53585 +[#53892]: https://github.com/home-assistant/core/pull/53892 +[#53943]: https://github.com/home-assistant/core/pull/53943 +[#54032]: https://github.com/home-assistant/core/pull/54032 +[#54066]: https://github.com/home-assistant/core/pull/54066 +[#54106]: https://github.com/home-assistant/core/pull/54106 +[#54173]: https://github.com/home-assistant/core/pull/54173 +[#54210]: https://github.com/home-assistant/core/pull/54210 +[#54279]: https://github.com/home-assistant/core/pull/54279 +[#54298]: https://github.com/home-assistant/core/pull/54298 +[#54411]: https://github.com/home-assistant/core/pull/54411 +[#54479]: https://github.com/home-assistant/core/pull/54479 +[#54584]: https://github.com/home-assistant/core/pull/54584 +[#54597]: https://github.com/home-assistant/core/pull/54597 +[#54602]: https://github.com/home-assistant/core/pull/54602 +[#54706]: https://github.com/home-assistant/core/pull/54706 +[#54735]: https://github.com/home-assistant/core/pull/54735 +[#54745]: https://github.com/home-assistant/core/pull/54745 +[#54760]: https://github.com/home-assistant/core/pull/54760 +[#54780]: https://github.com/home-assistant/core/pull/54780 +[#54820]: https://github.com/home-assistant/core/pull/54820 +[#54878]: https://github.com/home-assistant/core/pull/54878 +[#54947]: https://github.com/home-assistant/core/pull/54947 +[#55035]: https://github.com/home-assistant/core/pull/55035 +[#55061]: https://github.com/home-assistant/core/pull/55061 +[#55078]: https://github.com/home-assistant/core/pull/55078 +[#55080]: https://github.com/home-assistant/core/pull/55080 +[#55103]: https://github.com/home-assistant/core/pull/55103 +[#55104]: https://github.com/home-assistant/core/pull/55104 +[#55174]: https://github.com/home-assistant/core/pull/55174 +[#55192]: https://github.com/home-assistant/core/pull/55192 +[#55218]: https://github.com/home-assistant/core/pull/55218 +[#55220]: https://github.com/home-assistant/core/pull/55220 +[#55222]: https://github.com/home-assistant/core/pull/55222 +[#55224]: https://github.com/home-assistant/core/pull/55224 +[#55227]: https://github.com/home-assistant/core/pull/55227 +[#55230]: https://github.com/home-assistant/core/pull/55230 +[#55232]: https://github.com/home-assistant/core/pull/55232 +[#55243]: https://github.com/home-assistant/core/pull/55243 +[#55244]: https://github.com/home-assistant/core/pull/55244 +[#55257]: https://github.com/home-assistant/core/pull/55257 +[#55258]: https://github.com/home-assistant/core/pull/55258 +[#55265]: https://github.com/home-assistant/core/pull/55265 +[#55266]: https://github.com/home-assistant/core/pull/55266 +[#55267]: https://github.com/home-assistant/core/pull/55267 +[#55275]: https://github.com/home-assistant/core/pull/55275 +[#55277]: https://github.com/home-assistant/core/pull/55277 +[#55288]: https://github.com/home-assistant/core/pull/55288 +[#55290]: https://github.com/home-assistant/core/pull/55290 +[#55312]: https://github.com/home-assistant/core/pull/55312 +[#55313]: https://github.com/home-assistant/core/pull/55313 +[#55327]: https://github.com/home-assistant/core/pull/55327 +[#55330]: https://github.com/home-assistant/core/pull/55330 +[#55335]: https://github.com/home-assistant/core/pull/55335 +[#55339]: https://github.com/home-assistant/core/pull/55339 +[#55340]: https://github.com/home-assistant/core/pull/55340 +[#55357]: https://github.com/home-assistant/core/pull/55357 +[#55358]: https://github.com/home-assistant/core/pull/55358 +[#55365]: https://github.com/home-assistant/core/pull/55365 +[#55366]: https://github.com/home-assistant/core/pull/55366 +[#55372]: https://github.com/home-assistant/core/pull/55372 +[#55373]: https://github.com/home-assistant/core/pull/55373 +[#55383]: https://github.com/home-assistant/core/pull/55383 +[#55387]: https://github.com/home-assistant/core/pull/55387 +[#55388]: https://github.com/home-assistant/core/pull/55388 +[#55389]: https://github.com/home-assistant/core/pull/55389 +[#55390]: https://github.com/home-assistant/core/pull/55390 +[#55393]: https://github.com/home-assistant/core/pull/55393 +[#55396]: https://github.com/home-assistant/core/pull/55396 +[#55402]: https://github.com/home-assistant/core/pull/55402 +[#55405]: https://github.com/home-assistant/core/pull/55405 +[#55407]: https://github.com/home-assistant/core/pull/55407 +[#55410]: https://github.com/home-assistant/core/pull/55410 +[#55412]: https://github.com/home-assistant/core/pull/55412 +[#55413]: https://github.com/home-assistant/core/pull/55413 +[#55414]: https://github.com/home-assistant/core/pull/55414 +[#55415]: https://github.com/home-assistant/core/pull/55415 +[#55416]: https://github.com/home-assistant/core/pull/55416 +[#55417]: https://github.com/home-assistant/core/pull/55417 +[#55418]: https://github.com/home-assistant/core/pull/55418 +[#55419]: https://github.com/home-assistant/core/pull/55419 +[#55422]: https://github.com/home-assistant/core/pull/55422 +[#55423]: https://github.com/home-assistant/core/pull/55423 +[#55426]: https://github.com/home-assistant/core/pull/55426 +[#55427]: https://github.com/home-assistant/core/pull/55427 +[#55428]: https://github.com/home-assistant/core/pull/55428 +[#55442]: https://github.com/home-assistant/core/pull/55442 +[#55445]: https://github.com/home-assistant/core/pull/55445 +[#55446]: https://github.com/home-assistant/core/pull/55446 +[#55448]: https://github.com/home-assistant/core/pull/55448 +[#55449]: https://github.com/home-assistant/core/pull/55449 +[#55454]: https://github.com/home-assistant/core/pull/55454 +[#55456]: https://github.com/home-assistant/core/pull/55456 +[#55461]: https://github.com/home-assistant/core/pull/55461 +[#55465]: https://github.com/home-assistant/core/pull/55465 +[#55469]: https://github.com/home-assistant/core/pull/55469 +[#55471]: https://github.com/home-assistant/core/pull/55471 +[#55474]: https://github.com/home-assistant/core/pull/55474 +[#55484]: https://github.com/home-assistant/core/pull/55484 +[#55491]: https://github.com/home-assistant/core/pull/55491 +[#55494]: https://github.com/home-assistant/core/pull/55494 +[#55506]: https://github.com/home-assistant/core/pull/55506 +[#55512]: https://github.com/home-assistant/core/pull/55512 +[#55515]: https://github.com/home-assistant/core/pull/55515 +[#55517]: https://github.com/home-assistant/core/pull/55517 +[#55518]: https://github.com/home-assistant/core/pull/55518 +[#55519]: https://github.com/home-assistant/core/pull/55519 +[#55521]: https://github.com/home-assistant/core/pull/55521 +[#55526]: https://github.com/home-assistant/core/pull/55526 +[#55528]: https://github.com/home-assistant/core/pull/55528 +[#55529]: https://github.com/home-assistant/core/pull/55529 +[#55540]: https://github.com/home-assistant/core/pull/55540 +[#55547]: https://github.com/home-assistant/core/pull/55547 +[#55561]: https://github.com/home-assistant/core/pull/55561 +[#55564]: https://github.com/home-assistant/core/pull/55564 +[#55581]: https://github.com/home-assistant/core/pull/55581 +[#55583]: https://github.com/home-assistant/core/pull/55583 +[#55584]: https://github.com/home-assistant/core/pull/55584 +[#55585]: https://github.com/home-assistant/core/pull/55585 +[#55587]: https://github.com/home-assistant/core/pull/55587 +[#55588]: https://github.com/home-assistant/core/pull/55588 +[#55592]: https://github.com/home-assistant/core/pull/55592 +[#55593]: https://github.com/home-assistant/core/pull/55593 +[#55594]: https://github.com/home-assistant/core/pull/55594 +[#55595]: https://github.com/home-assistant/core/pull/55595 +[#55596]: https://github.com/home-assistant/core/pull/55596 +[#55598]: https://github.com/home-assistant/core/pull/55598 +[#55599]: https://github.com/home-assistant/core/pull/55599 +[#55601]: https://github.com/home-assistant/core/pull/55601 +[#55616]: https://github.com/home-assistant/core/pull/55616 +[#55617]: https://github.com/home-assistant/core/pull/55617 +[#55626]: https://github.com/home-assistant/core/pull/55626 +[#55636]: https://github.com/home-assistant/core/pull/55636 +[#55642]: https://github.com/home-assistant/core/pull/55642 +[#55647]: https://github.com/home-assistant/core/pull/55647 +[#55650]: https://github.com/home-assistant/core/pull/55650 +[#55660]: https://github.com/home-assistant/core/pull/55660 +[#55665]: https://github.com/home-assistant/core/pull/55665 +[#55668]: https://github.com/home-assistant/core/pull/55668 +[#55671]: https://github.com/home-assistant/core/pull/55671 +[#55672]: https://github.com/home-assistant/core/pull/55672 +[#55675]: https://github.com/home-assistant/core/pull/55675 +[#55676]: https://github.com/home-assistant/core/pull/55676 +[#55677]: https://github.com/home-assistant/core/pull/55677 +[#55678]: https://github.com/home-assistant/core/pull/55678 +[#55679]: https://github.com/home-assistant/core/pull/55679 +[#55680]: https://github.com/home-assistant/core/pull/55680 +[#55681]: https://github.com/home-assistant/core/pull/55681 +[#55682]: https://github.com/home-assistant/core/pull/55682 +[#55683]: https://github.com/home-assistant/core/pull/55683 +[#55684]: https://github.com/home-assistant/core/pull/55684 +[#55686]: https://github.com/home-assistant/core/pull/55686 +[#55688]: https://github.com/home-assistant/core/pull/55688 +[#55691]: https://github.com/home-assistant/core/pull/55691 +[#55694]: https://github.com/home-assistant/core/pull/55694 +[#55695]: https://github.com/home-assistant/core/pull/55695 +[#55696]: https://github.com/home-assistant/core/pull/55696 +[#55697]: https://github.com/home-assistant/core/pull/55697 +[#55698]: https://github.com/home-assistant/core/pull/55698 +[#55699]: https://github.com/home-assistant/core/pull/55699 +[#55710]: https://github.com/home-assistant/core/pull/55710 +[#55714]: https://github.com/home-assistant/core/pull/55714 +[#55734]: https://github.com/home-assistant/core/pull/55734 +[#55736]: https://github.com/home-assistant/core/pull/55736 +[#55741]: https://github.com/home-assistant/core/pull/55741 +[#55743]: https://github.com/home-assistant/core/pull/55743 +[#55744]: https://github.com/home-assistant/core/pull/55744 +[#55746]: https://github.com/home-assistant/core/pull/55746 +[#55747]: https://github.com/home-assistant/core/pull/55747 +[#55750]: https://github.com/home-assistant/core/pull/55750 +[#55751]: https://github.com/home-assistant/core/pull/55751 +[#55758]: https://github.com/home-assistant/core/pull/55758 +[#55774]: https://github.com/home-assistant/core/pull/55774 +[#55784]: https://github.com/home-assistant/core/pull/55784 +[#55788]: https://github.com/home-assistant/core/pull/55788 +[#55789]: https://github.com/home-assistant/core/pull/55789 +[#55790]: https://github.com/home-assistant/core/pull/55790 +[#55791]: https://github.com/home-assistant/core/pull/55791 +[#55792]: https://github.com/home-assistant/core/pull/55792 +[#55794]: https://github.com/home-assistant/core/pull/55794 +[#55796]: https://github.com/home-assistant/core/pull/55796 +[#55804]: https://github.com/home-assistant/core/pull/55804 +[#55805]: https://github.com/home-assistant/core/pull/55805 +[#55817]: https://github.com/home-assistant/core/pull/55817 +[#55818]: https://github.com/home-assistant/core/pull/55818 +[#55819]: https://github.com/home-assistant/core/pull/55819 +[#55822]: https://github.com/home-assistant/core/pull/55822 +[#55823]: https://github.com/home-assistant/core/pull/55823 +[#55828]: https://github.com/home-assistant/core/pull/55828 +[#55844]: https://github.com/home-assistant/core/pull/55844 +[#55845]: https://github.com/home-assistant/core/pull/55845 +[#55846]: https://github.com/home-assistant/core/pull/55846 +[#55850]: https://github.com/home-assistant/core/pull/55850 +[#55855]: https://github.com/home-assistant/core/pull/55855 +[#55856]: https://github.com/home-assistant/core/pull/55856 +[#55860]: https://github.com/home-assistant/core/pull/55860 +[#55872]: https://github.com/home-assistant/core/pull/55872 +[#55874]: https://github.com/home-assistant/core/pull/55874 +[#55876]: https://github.com/home-assistant/core/pull/55876 +[#55877]: https://github.com/home-assistant/core/pull/55877 +[#55887]: https://github.com/home-assistant/core/pull/55887 +[#55894]: https://github.com/home-assistant/core/pull/55894 +[#55895]: https://github.com/home-assistant/core/pull/55895 +[#55900]: https://github.com/home-assistant/core/pull/55900 +[#55904]: https://github.com/home-assistant/core/pull/55904 +[#55917]: https://github.com/home-assistant/core/pull/55917 +[#55922]: https://github.com/home-assistant/core/pull/55922 +[#55923]: https://github.com/home-assistant/core/pull/55923 +[#55924]: https://github.com/home-assistant/core/pull/55924 +[#55925]: https://github.com/home-assistant/core/pull/55925 +[#55926]: https://github.com/home-assistant/core/pull/55926 +[#55928]: https://github.com/home-assistant/core/pull/55928 +[#55929]: https://github.com/home-assistant/core/pull/55929 +[#55930]: https://github.com/home-assistant/core/pull/55930 +[#55931]: https://github.com/home-assistant/core/pull/55931 +[#55932]: https://github.com/home-assistant/core/pull/55932 +[#55950]: https://github.com/home-assistant/core/pull/55950 +[#55955]: https://github.com/home-assistant/core/pull/55955 +[#55963]: https://github.com/home-assistant/core/pull/55963 +[#55964]: https://github.com/home-assistant/core/pull/55964 +[#55965]: https://github.com/home-assistant/core/pull/55965 +[#55967]: https://github.com/home-assistant/core/pull/55967 +[#55970]: https://github.com/home-assistant/core/pull/55970 +[#55976]: https://github.com/home-assistant/core/pull/55976 +[#55979]: https://github.com/home-assistant/core/pull/55979 +[#55982]: https://github.com/home-assistant/core/pull/55982 +[#55983]: https://github.com/home-assistant/core/pull/55983 +[#55985]: https://github.com/home-assistant/core/pull/55985 +[#55987]: https://github.com/home-assistant/core/pull/55987 +[#55988]: https://github.com/home-assistant/core/pull/55988 +[#55996]: https://github.com/home-assistant/core/pull/55996 +[#55997]: https://github.com/home-assistant/core/pull/55997 +[#56002]: https://github.com/home-assistant/core/pull/56002 +[#56003]: https://github.com/home-assistant/core/pull/56003 +[#56006]: https://github.com/home-assistant/core/pull/56006 +[#56011]: https://github.com/home-assistant/core/pull/56011 +[#56012]: https://github.com/home-assistant/core/pull/56012 +[#56015]: https://github.com/home-assistant/core/pull/56015 +[#56018]: https://github.com/home-assistant/core/pull/56018 +[#56020]: https://github.com/home-assistant/core/pull/56020 +[#56021]: https://github.com/home-assistant/core/pull/56021 +[#56026]: https://github.com/home-assistant/core/pull/56026 +[#56029]: https://github.com/home-assistant/core/pull/56029 +[#56040]: https://github.com/home-assistant/core/pull/56040 +[#56042]: https://github.com/home-assistant/core/pull/56042 +[#56045]: https://github.com/home-assistant/core/pull/56045 +[#56048]: https://github.com/home-assistant/core/pull/56048 +[#56053]: https://github.com/home-assistant/core/pull/56053 +[#56057]: https://github.com/home-assistant/core/pull/56057 +[#56063]: https://github.com/home-assistant/core/pull/56063 +[#56065]: https://github.com/home-assistant/core/pull/56065 +[#56067]: https://github.com/home-assistant/core/pull/56067 +[#56069]: https://github.com/home-assistant/core/pull/56069 +[#56070]: https://github.com/home-assistant/core/pull/56070 +[#56076]: https://github.com/home-assistant/core/pull/56076 +[#56078]: https://github.com/home-assistant/core/pull/56078 +[#56082]: https://github.com/home-assistant/core/pull/56082 +[#56083]: https://github.com/home-assistant/core/pull/56083 +[#56085]: https://github.com/home-assistant/core/pull/56085 +[#56093]: https://github.com/home-assistant/core/pull/56093 +[#56095]: https://github.com/home-assistant/core/pull/56095 +[#56096]: https://github.com/home-assistant/core/pull/56096 +[#56097]: https://github.com/home-assistant/core/pull/56097 +[#56102]: https://github.com/home-assistant/core/pull/56102 +[#56105]: https://github.com/home-assistant/core/pull/56105 +[#56106]: https://github.com/home-assistant/core/pull/56106 +[#56107]: https://github.com/home-assistant/core/pull/56107 +[#56112]: https://github.com/home-assistant/core/pull/56112 +[#56113]: https://github.com/home-assistant/core/pull/56113 +[#56115]: https://github.com/home-assistant/core/pull/56115 +[#56118]: https://github.com/home-assistant/core/pull/56118 +[#56127]: https://github.com/home-assistant/core/pull/56127 +[#56130]: https://github.com/home-assistant/core/pull/56130 +[#56136]: https://github.com/home-assistant/core/pull/56136 +[#56137]: https://github.com/home-assistant/core/pull/56137 +[#56140]: https://github.com/home-assistant/core/pull/56140 +[#56142]: https://github.com/home-assistant/core/pull/56142 +[#56143]: https://github.com/home-assistant/core/pull/56143 +[#56147]: https://github.com/home-assistant/core/pull/56147 +[#56149]: https://github.com/home-assistant/core/pull/56149 +[#56153]: https://github.com/home-assistant/core/pull/56153 +[#56159]: https://github.com/home-assistant/core/pull/56159 +[#56167]: https://github.com/home-assistant/core/pull/56167 +[#56168]: https://github.com/home-assistant/core/pull/56168 +[#56170]: https://github.com/home-assistant/core/pull/56170 +[#56184]: https://github.com/home-assistant/core/pull/56184 +[#56190]: https://github.com/home-assistant/core/pull/56190 +[#56193]: https://github.com/home-assistant/core/pull/56193 +[#56198]: https://github.com/home-assistant/core/pull/56198 +[#56200]: https://github.com/home-assistant/core/pull/56200 +[#56201]: https://github.com/home-assistant/core/pull/56201 +[#56204]: https://github.com/home-assistant/core/pull/56204 +[#56206]: https://github.com/home-assistant/core/pull/56206 +[#56207]: https://github.com/home-assistant/core/pull/56207 +[#56209]: https://github.com/home-assistant/core/pull/56209 +[#56210]: https://github.com/home-assistant/core/pull/56210 +[#56211]: https://github.com/home-assistant/core/pull/56211 +[#56215]: https://github.com/home-assistant/core/pull/56215 +[#56216]: https://github.com/home-assistant/core/pull/56216 +[#56218]: https://github.com/home-assistant/core/pull/56218 +[#56219]: https://github.com/home-assistant/core/pull/56219 +[#56221]: https://github.com/home-assistant/core/pull/56221 +[#56223]: https://github.com/home-assistant/core/pull/56223 +[#56229]: https://github.com/home-assistant/core/pull/56229 +[#56230]: https://github.com/home-assistant/core/pull/56230 +[#56233]: https://github.com/home-assistant/core/pull/56233 +[#56234]: https://github.com/home-assistant/core/pull/56234 +[#56235]: https://github.com/home-assistant/core/pull/56235 +[#56238]: https://github.com/home-assistant/core/pull/56238 +[#56243]: https://github.com/home-assistant/core/pull/56243 +[#56247]: https://github.com/home-assistant/core/pull/56247 +[#56253]: https://github.com/home-assistant/core/pull/56253 +[#56254]: https://github.com/home-assistant/core/pull/56254 +[#56255]: https://github.com/home-assistant/core/pull/56255 +[#56258]: https://github.com/home-assistant/core/pull/56258 +[#56261]: https://github.com/home-assistant/core/pull/56261 +[#56262]: https://github.com/home-assistant/core/pull/56262 +[#56264]: https://github.com/home-assistant/core/pull/56264 +[#56266]: https://github.com/home-assistant/core/pull/56266 +[#56281]: https://github.com/home-assistant/core/pull/56281 +[#56283]: https://github.com/home-assistant/core/pull/56283 +[#56298]: https://github.com/home-assistant/core/pull/56298 +[#56300]: https://github.com/home-assistant/core/pull/56300 +[#56304]: https://github.com/home-assistant/core/pull/56304 +[#56307]: https://github.com/home-assistant/core/pull/56307 +[#56308]: https://github.com/home-assistant/core/pull/56308 +[#56310]: https://github.com/home-assistant/core/pull/56310 +[#56312]: https://github.com/home-assistant/core/pull/56312 +[#56314]: https://github.com/home-assistant/core/pull/56314 +[#56316]: https://github.com/home-assistant/core/pull/56316 +[#56318]: https://github.com/home-assistant/core/pull/56318 +[#56324]: https://github.com/home-assistant/core/pull/56324 +[#56325]: https://github.com/home-assistant/core/pull/56325 +[#56326]: https://github.com/home-assistant/core/pull/56326 +[#56328]: https://github.com/home-assistant/core/pull/56328 +[#56329]: https://github.com/home-assistant/core/pull/56329 +[#56330]: https://github.com/home-assistant/core/pull/56330 +[#56331]: https://github.com/home-assistant/core/pull/56331 +[#56334]: https://github.com/home-assistant/core/pull/56334 +[#56335]: https://github.com/home-assistant/core/pull/56335 +[#56336]: https://github.com/home-assistant/core/pull/56336 +[#56337]: https://github.com/home-assistant/core/pull/56337 +[#56339]: https://github.com/home-assistant/core/pull/56339 +[#56341]: https://github.com/home-assistant/core/pull/56341 +[#56342]: https://github.com/home-assistant/core/pull/56342 +[#56343]: https://github.com/home-assistant/core/pull/56343 +[#56345]: https://github.com/home-assistant/core/pull/56345 +[#56346]: https://github.com/home-assistant/core/pull/56346 +[#56348]: https://github.com/home-assistant/core/pull/56348 +[#56351]: https://github.com/home-assistant/core/pull/56351 +[#56353]: https://github.com/home-assistant/core/pull/56353 +[#56359]: https://github.com/home-assistant/core/pull/56359 +[#56361]: https://github.com/home-assistant/core/pull/56361 +[#56362]: https://github.com/home-assistant/core/pull/56362 +[#56364]: https://github.com/home-assistant/core/pull/56364 +[#56371]: https://github.com/home-assistant/core/pull/56371 +[#56375]: https://github.com/home-assistant/core/pull/56375 +[#56376]: https://github.com/home-assistant/core/pull/56376 +[#56377]: https://github.com/home-assistant/core/pull/56377 +[#56378]: https://github.com/home-assistant/core/pull/56378 +[#56379]: https://github.com/home-assistant/core/pull/56379 +[#56380]: https://github.com/home-assistant/core/pull/56380 +[#56381]: https://github.com/home-assistant/core/pull/56381 +[#56382]: https://github.com/home-assistant/core/pull/56382 +[#56384]: https://github.com/home-assistant/core/pull/56384 +[#56388]: https://github.com/home-assistant/core/pull/56388 +[#56389]: https://github.com/home-assistant/core/pull/56389 +[#56390]: https://github.com/home-assistant/core/pull/56390 +[#56391]: https://github.com/home-assistant/core/pull/56391 +[#56393]: https://github.com/home-assistant/core/pull/56393 +[#56394]: https://github.com/home-assistant/core/pull/56394 +[#56395]: https://github.com/home-assistant/core/pull/56395 +[#56396]: https://github.com/home-assistant/core/pull/56396 +[#56397]: https://github.com/home-assistant/core/pull/56397 +[#56401]: https://github.com/home-assistant/core/pull/56401 +[#56402]: https://github.com/home-assistant/core/pull/56402 +[#56405]: https://github.com/home-assistant/core/pull/56405 +[#56406]: https://github.com/home-assistant/core/pull/56406 +[#56407]: https://github.com/home-assistant/core/pull/56407 +[#56409]: https://github.com/home-assistant/core/pull/56409 +[#56413]: https://github.com/home-assistant/core/pull/56413 +[#56414]: https://github.com/home-assistant/core/pull/56414 +[#56415]: https://github.com/home-assistant/core/pull/56415 +[#56416]: https://github.com/home-assistant/core/pull/56416 +[#56417]: https://github.com/home-assistant/core/pull/56417 +[#56419]: https://github.com/home-assistant/core/pull/56419 +[#56424]: https://github.com/home-assistant/core/pull/56424 +[#56425]: https://github.com/home-assistant/core/pull/56425 +[#56426]: https://github.com/home-assistant/core/pull/56426 +[#56428]: https://github.com/home-assistant/core/pull/56428 +[#56430]: https://github.com/home-assistant/core/pull/56430 +[#56432]: https://github.com/home-assistant/core/pull/56432 +[#56433]: https://github.com/home-assistant/core/pull/56433 +[#56434]: https://github.com/home-assistant/core/pull/56434 +[#56435]: https://github.com/home-assistant/core/pull/56435 +[#56436]: https://github.com/home-assistant/core/pull/56436 +[#56438]: https://github.com/home-assistant/core/pull/56438 +[#56441]: https://github.com/home-assistant/core/pull/56441 +[#56443]: https://github.com/home-assistant/core/pull/56443 +[#56448]: https://github.com/home-assistant/core/pull/56448 +[#56451]: https://github.com/home-assistant/core/pull/56451 +[#56453]: https://github.com/home-assistant/core/pull/56453 +[#56456]: https://github.com/home-assistant/core/pull/56456 +[#56457]: https://github.com/home-assistant/core/pull/56457 +[#56460]: https://github.com/home-assistant/core/pull/56460 +[#56461]: https://github.com/home-assistant/core/pull/56461 +[#56463]: https://github.com/home-assistant/core/pull/56463 +[#56464]: https://github.com/home-assistant/core/pull/56464 +[#56468]: https://github.com/home-assistant/core/pull/56468 +[#56469]: https://github.com/home-assistant/core/pull/56469 +[#56476]: https://github.com/home-assistant/core/pull/56476 +[#56477]: https://github.com/home-assistant/core/pull/56477 +[#56478]: https://github.com/home-assistant/core/pull/56478 +[#56479]: https://github.com/home-assistant/core/pull/56479 +[#56481]: https://github.com/home-assistant/core/pull/56481 +[#56485]: https://github.com/home-assistant/core/pull/56485 +[#56492]: https://github.com/home-assistant/core/pull/56492 +[#56499]: https://github.com/home-assistant/core/pull/56499 +[#56501]: https://github.com/home-assistant/core/pull/56501 +[#56504]: https://github.com/home-assistant/core/pull/56504 +[#56508]: https://github.com/home-assistant/core/pull/56508 +[#56516]: https://github.com/home-assistant/core/pull/56516 +[#56517]: https://github.com/home-assistant/core/pull/56517 +[#56518]: https://github.com/home-assistant/core/pull/56518 +[#56520]: https://github.com/home-assistant/core/pull/56520 +[#56528]: https://github.com/home-assistant/core/pull/56528 +[#56533]: https://github.com/home-assistant/core/pull/56533 +[#56536]: https://github.com/home-assistant/core/pull/56536 +[#56542]: https://github.com/home-assistant/core/pull/56542 +[#56545]: https://github.com/home-assistant/core/pull/56545 +[#56546]: https://github.com/home-assistant/core/pull/56546 +[#56548]: https://github.com/home-assistant/core/pull/56548 +[#56549]: https://github.com/home-assistant/core/pull/56549 +[#56550]: https://github.com/home-assistant/core/pull/56550 +[#56551]: https://github.com/home-assistant/core/pull/56551 +[#56553]: https://github.com/home-assistant/core/pull/56553 +[#56555]: https://github.com/home-assistant/core/pull/56555 +[#56561]: https://github.com/home-assistant/core/pull/56561 +[#56564]: https://github.com/home-assistant/core/pull/56564 +[#56569]: https://github.com/home-assistant/core/pull/56569 +[#56571]: https://github.com/home-assistant/core/pull/56571 +[#56572]: https://github.com/home-assistant/core/pull/56572 +[#56573]: https://github.com/home-assistant/core/pull/56573 +[#56574]: https://github.com/home-assistant/core/pull/56574 +[#56575]: https://github.com/home-assistant/core/pull/56575 +[#56576]: https://github.com/home-assistant/core/pull/56576 +[#56577]: https://github.com/home-assistant/core/pull/56577 +[#56578]: https://github.com/home-assistant/core/pull/56578 +[#56579]: https://github.com/home-assistant/core/pull/56579 +[#56580]: https://github.com/home-assistant/core/pull/56580 +[#56584]: https://github.com/home-assistant/core/pull/56584 +[#56585]: https://github.com/home-assistant/core/pull/56585 +[#56586]: https://github.com/home-assistant/core/pull/56586 +[#56591]: https://github.com/home-assistant/core/pull/56591 +[#56592]: https://github.com/home-assistant/core/pull/56592 +[#56594]: https://github.com/home-assistant/core/pull/56594 +[#56599]: https://github.com/home-assistant/core/pull/56599 +[#56600]: https://github.com/home-assistant/core/pull/56600 +[#56601]: https://github.com/home-assistant/core/pull/56601 +[#56603]: https://github.com/home-assistant/core/pull/56603 +[#56606]: https://github.com/home-assistant/core/pull/56606 +[#56609]: https://github.com/home-assistant/core/pull/56609 +[#56611]: https://github.com/home-assistant/core/pull/56611 +[#56612]: https://github.com/home-assistant/core/pull/56612 +[#56613]: https://github.com/home-assistant/core/pull/56613 +[#56615]: https://github.com/home-assistant/core/pull/56615 +[#56616]: https://github.com/home-assistant/core/pull/56616 +[#56622]: https://github.com/home-assistant/core/pull/56622 +[#56623]: https://github.com/home-assistant/core/pull/56623 +[#56626]: https://github.com/home-assistant/core/pull/56626 +[#56628]: https://github.com/home-assistant/core/pull/56628 +[#56629]: https://github.com/home-assistant/core/pull/56629 +[#56635]: https://github.com/home-assistant/core/pull/56635 +[#56636]: https://github.com/home-assistant/core/pull/56636 +[#56637]: https://github.com/home-assistant/core/pull/56637 +[#56638]: https://github.com/home-assistant/core/pull/56638 +[#56639]: https://github.com/home-assistant/core/pull/56639 +[#56640]: https://github.com/home-assistant/core/pull/56640 +[#56650]: https://github.com/home-assistant/core/pull/56650 +[#56655]: https://github.com/home-assistant/core/pull/56655 +[#56656]: https://github.com/home-assistant/core/pull/56656 +[#56661]: https://github.com/home-assistant/core/pull/56661 +[#56662]: https://github.com/home-assistant/core/pull/56662 +[#56663]: https://github.com/home-assistant/core/pull/56663 +[#56664]: https://github.com/home-assistant/core/pull/56664 +[#56665]: https://github.com/home-assistant/core/pull/56665 +[#56666]: https://github.com/home-assistant/core/pull/56666 +[#56668]: https://github.com/home-assistant/core/pull/56668 +[#56677]: https://github.com/home-assistant/core/pull/56677 +[#56678]: https://github.com/home-assistant/core/pull/56678 +[#56679]: https://github.com/home-assistant/core/pull/56679 +[#56680]: https://github.com/home-assistant/core/pull/56680 +[#56682]: https://github.com/home-assistant/core/pull/56682 +[#56683]: https://github.com/home-assistant/core/pull/56683 +[#56684]: https://github.com/home-assistant/core/pull/56684 +[#56686]: https://github.com/home-assistant/core/pull/56686 +[#56687]: https://github.com/home-assistant/core/pull/56687 +[#56688]: https://github.com/home-assistant/core/pull/56688 +[#56698]: https://github.com/home-assistant/core/pull/56698 +[#56699]: https://github.com/home-assistant/core/pull/56699 +[#56700]: https://github.com/home-assistant/core/pull/56700 +[#56701]: https://github.com/home-assistant/core/pull/56701 +[#56702]: https://github.com/home-assistant/core/pull/56702 +[#56703]: https://github.com/home-assistant/core/pull/56703 +[#56704]: https://github.com/home-assistant/core/pull/56704 +[#56705]: https://github.com/home-assistant/core/pull/56705 +[#56706]: https://github.com/home-assistant/core/pull/56706 +[#56707]: https://github.com/home-assistant/core/pull/56707 +[#56717]: https://github.com/home-assistant/core/pull/56717 +[#56718]: https://github.com/home-assistant/core/pull/56718 +[#56719]: https://github.com/home-assistant/core/pull/56719 +[#56721]: https://github.com/home-assistant/core/pull/56721 +[#56722]: https://github.com/home-assistant/core/pull/56722 +[#56726]: https://github.com/home-assistant/core/pull/56726 +[#56727]: https://github.com/home-assistant/core/pull/56727 +[#56728]: https://github.com/home-assistant/core/pull/56728 +[#56731]: https://github.com/home-assistant/core/pull/56731 +[#56732]: https://github.com/home-assistant/core/pull/56732 +[#56734]: https://github.com/home-assistant/core/pull/56734 +[#56736]: https://github.com/home-assistant/core/pull/56736 +[#56739]: https://github.com/home-assistant/core/pull/56739 +[#56740]: https://github.com/home-assistant/core/pull/56740 +[#56743]: https://github.com/home-assistant/core/pull/56743 +[#56744]: https://github.com/home-assistant/core/pull/56744 +[#56746]: https://github.com/home-assistant/core/pull/56746 +[#56747]: https://github.com/home-assistant/core/pull/56747 +[#56751]: https://github.com/home-assistant/core/pull/56751 +[#56752]: https://github.com/home-assistant/core/pull/56752 +[#56753]: https://github.com/home-assistant/core/pull/56753 +[#56754]: https://github.com/home-assistant/core/pull/56754 +[#56757]: https://github.com/home-assistant/core/pull/56757 +[#56758]: https://github.com/home-assistant/core/pull/56758 +[#56762]: https://github.com/home-assistant/core/pull/56762 +[#56763]: https://github.com/home-assistant/core/pull/56763 +[#56764]: https://github.com/home-assistant/core/pull/56764 +[#56767]: https://github.com/home-assistant/core/pull/56767 +[#56768]: https://github.com/home-assistant/core/pull/56768 +[#56772]: https://github.com/home-assistant/core/pull/56772 +[#56773]: https://github.com/home-assistant/core/pull/56773 +[#56775]: https://github.com/home-assistant/core/pull/56775 +[#56776]: https://github.com/home-assistant/core/pull/56776 +[#56777]: https://github.com/home-assistant/core/pull/56777 +[#56778]: https://github.com/home-assistant/core/pull/56778 +[#56779]: https://github.com/home-assistant/core/pull/56779 +[#56783]: https://github.com/home-assistant/core/pull/56783 +[#56785]: https://github.com/home-assistant/core/pull/56785 +[#56791]: https://github.com/home-assistant/core/pull/56791 +[#56794]: https://github.com/home-assistant/core/pull/56794 +[#56795]: https://github.com/home-assistant/core/pull/56795 +[#56804]: https://github.com/home-assistant/core/pull/56804 +[#56806]: https://github.com/home-assistant/core/pull/56806 +[#56808]: https://github.com/home-assistant/core/pull/56808 +[#56809]: https://github.com/home-assistant/core/pull/56809 +[#56812]: https://github.com/home-assistant/core/pull/56812 +[#56814]: https://github.com/home-assistant/core/pull/56814 +[#56820]: https://github.com/home-assistant/core/pull/56820 +[#56821]: https://github.com/home-assistant/core/pull/56821 +[#56824]: https://github.com/home-assistant/core/pull/56824 +[#56825]: https://github.com/home-assistant/core/pull/56825 +[#56826]: https://github.com/home-assistant/core/pull/56826 +[#56827]: https://github.com/home-assistant/core/pull/56827 +[#56828]: https://github.com/home-assistant/core/pull/56828 +[#56829]: https://github.com/home-assistant/core/pull/56829 +[#56830]: https://github.com/home-assistant/core/pull/56830 +[#56833]: https://github.com/home-assistant/core/pull/56833 +[#56844]: https://github.com/home-assistant/core/pull/56844 +[#56845]: https://github.com/home-assistant/core/pull/56845 +[#56848]: https://github.com/home-assistant/core/pull/56848 +[#56864]: https://github.com/home-assistant/core/pull/56864 +[#56869]: https://github.com/home-assistant/core/pull/56869 +[#56876]: https://github.com/home-assistant/core/pull/56876 +[#56877]: https://github.com/home-assistant/core/pull/56877 +[#56879]: https://github.com/home-assistant/core/pull/56879 +[#56884]: https://github.com/home-assistant/core/pull/56884 +[#56891]: https://github.com/home-assistant/core/pull/56891 +[#56892]: https://github.com/home-assistant/core/pull/56892 +[#56897]: https://github.com/home-assistant/core/pull/56897 +[#56901]: https://github.com/home-assistant/core/pull/56901 +[#56903]: https://github.com/home-assistant/core/pull/56903 +[#56912]: https://github.com/home-assistant/core/pull/56912 +[#56914]: https://github.com/home-assistant/core/pull/56914 +[#56919]: https://github.com/home-assistant/core/pull/56919 +[#56923]: https://github.com/home-assistant/core/pull/56923 +[#56928]: https://github.com/home-assistant/core/pull/56928 +[#56929]: https://github.com/home-assistant/core/pull/56929 +[#56932]: https://github.com/home-assistant/core/pull/56932 +[#56934]: https://github.com/home-assistant/core/pull/56934 +[#56936]: https://github.com/home-assistant/core/pull/56936 +[#56949]: https://github.com/home-assistant/core/pull/56949 +[#56950]: https://github.com/home-assistant/core/pull/56950 +[#56954]: https://github.com/home-assistant/core/pull/56954 +[#56955]: https://github.com/home-assistant/core/pull/56955 +[#56963]: https://github.com/home-assistant/core/pull/56963 +[#56964]: https://github.com/home-assistant/core/pull/56964 +[#56971]: https://github.com/home-assistant/core/pull/56971 +[#56973]: https://github.com/home-assistant/core/pull/56973 +[#56980]: https://github.com/home-assistant/core/pull/56980 +[#56986]: https://github.com/home-assistant/core/pull/56986 +[#56989]: https://github.com/home-assistant/core/pull/56989 +[#56996]: https://github.com/home-assistant/core/pull/56996 +[#56999]: https://github.com/home-assistant/core/pull/56999 +[#57003]: https://github.com/home-assistant/core/pull/57003 +[#57007]: https://github.com/home-assistant/core/pull/57007 +[#57009]: https://github.com/home-assistant/core/pull/57009 +[#57010]: https://github.com/home-assistant/core/pull/57010 +[#57014]: https://github.com/home-assistant/core/pull/57014 +[#57016]: https://github.com/home-assistant/core/pull/57016 +[#57020]: https://github.com/home-assistant/core/pull/57020 +[#57023]: https://github.com/home-assistant/core/pull/57023 +[#57027]: https://github.com/home-assistant/core/pull/57027 +[#57029]: https://github.com/home-assistant/core/pull/57029 +[#57031]: https://github.com/home-assistant/core/pull/57031 +[#57036]: https://github.com/home-assistant/core/pull/57036 +[#57040]: https://github.com/home-assistant/core/pull/57040 +[#57043]: https://github.com/home-assistant/core/pull/57043 +[#57057]: https://github.com/home-assistant/core/pull/57057 +[#57065]: https://github.com/home-assistant/core/pull/57065 +[#57071]: https://github.com/home-assistant/core/pull/57071 +[#57073]: https://github.com/home-assistant/core/pull/57073 +[#57075]: https://github.com/home-assistant/core/pull/57075 +[#57078]: https://github.com/home-assistant/core/pull/57078 +[#57100]: https://github.com/home-assistant/core/pull/57100 +[#57102]: https://github.com/home-assistant/core/pull/57102 +[#57103]: https://github.com/home-assistant/core/pull/57103 +[#57106]: https://github.com/home-assistant/core/pull/57106 +[#57109]: https://github.com/home-assistant/core/pull/57109 +[#57110]: https://github.com/home-assistant/core/pull/57110 +[#57112]: https://github.com/home-assistant/core/pull/57112 +[#57125]: https://github.com/home-assistant/core/pull/57125 +[#57138]: https://github.com/home-assistant/core/pull/57138 +[#57142]: https://github.com/home-assistant/core/pull/57142 +[#57143]: https://github.com/home-assistant/core/pull/57143 +[#57148]: https://github.com/home-assistant/core/pull/57148 +[#57149]: https://github.com/home-assistant/core/pull/57149 +[#57156]: https://github.com/home-assistant/core/pull/57156 +[@Adi146]: https://github.com/Adi146 +[@Adminiuga]: https://github.com/Adminiuga +[@Aohzan]: https://github.com/Aohzan +[@Cereal2nd]: https://github.com/Cereal2nd +[@Danielhiversen]: https://github.com/Danielhiversen +[@DrToxic]: https://github.com/DrToxic +[@Drae]: https://github.com/Drae +[@Ernst79]: https://github.com/Ernst79 +[@Feliksas]: https://github.com/Feliksas +[@FunctionalHacker]: https://github.com/FunctionalHacker +[@FuzzyMistborn]: https://github.com/FuzzyMistborn +[@JasperPlant]: https://github.com/JasperPlant +[@Jc2k]: https://github.com/Jc2k +[@Kane610]: https://github.com/Kane610 +[@KapJI]: https://github.com/KapJI +[@Mariusthvdb]: https://github.com/Mariusthvdb +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@Mas2112]: https://github.com/Mas2112 +[@MatthewFlamm]: https://github.com/MatthewFlamm +[@OldShaterhan]: https://github.com/OldShaterhan +[@OttoWinter]: https://github.com/OttoWinter +[@RenierM26]: https://github.com/RenierM26 +[@RicArch97]: https://github.com/RicArch97 +[@Shulyaka]: https://github.com/Shulyaka +[@Sian-Lee-SA]: https://github.com/Sian-Lee-SA +[@StevenLooman]: https://github.com/StevenLooman +[@TheBassEngineer]: https://github.com/TheBassEngineer +[@abmantis]: https://github.com/abmantis +[@acshef]: https://github.com/acshef +[@adamfeldman]: https://github.com/adamfeldman +[@agners]: https://github.com/agners +[@alandtse]: https://github.com/alandtse +[@andre-richter]: https://github.com/andre-richter +[@avee87]: https://github.com/avee87 +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@basnijholt]: https://github.com/basnijholt +[@bastgau]: https://github.com/bastgau +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@bjpetit]: https://github.com/bjpetit +[@bluviolin]: https://github.com/bluviolin +[@bramkragten]: https://github.com/bramkragten +[@brg468]: https://github.com/brg468 +[@brianegge]: https://github.com/brianegge +[@bsmappee]: https://github.com/bsmappee +[@cdce8p]: https://github.com/cdce8p +[@cdheiser]: https://github.com/cdheiser +[@cgtobi]: https://github.com/cgtobi +[@chemelli74]: https://github.com/chemelli74 +[@chishm]: https://github.com/chishm +[@cnico]: https://github.com/cnico +[@crazyfx1]: https://github.com/crazyfx1 +[@ctalkington]: https://github.com/ctalkington +[@deosrc]: https://github.com/deosrc +[@dgomes]: https://github.com/dgomes +[@dieselrabbit]: https://github.com/dieselrabbit +[@dmulcahey]: https://github.com/dmulcahey +[@eavanvalkenburg]: https://github.com/eavanvalkenburg +[@ehendrix23]: https://github.com/ehendrix23 +[@eifinger]: https://github.com/eifinger +[@elliotmoso]: https://github.com/elliotmoso +[@elupus]: https://github.com/elupus +[@emontnemery]: https://github.com/emontnemery +[@engrbm87]: https://github.com/engrbm87 +[@epenet]: https://github.com/epenet +[@esev]: https://github.com/esev +[@fabaff]: https://github.com/fabaff +[@farmio]: https://github.com/farmio +[@filcole]: https://github.com/filcole +[@flacjacket]: https://github.com/flacjacket +[@fredrike]: https://github.com/fredrike +[@frenck]: https://github.com/frenck +[@gjong]: https://github.com/gjong +[@gtdiehl]: https://github.com/gtdiehl +[@ha0y]: https://github.com/ha0y +[@hungnguyenm]: https://github.com/hungnguyenm +[@indykoning]: https://github.com/indykoning +[@inverse]: https://github.com/inverse +[@janiversen]: https://github.com/janiversen +[@jbouwh]: https://github.com/jbouwh +[@jcgoette]: https://github.com/jcgoette +[@jjlawren]: https://github.com/jjlawren +[@jloehr]: https://github.com/jloehr +[@joaophi]: https://github.com/joaophi +[@joshs85]: https://github.com/joshs85 +[@jrester]: https://github.com/jrester +[@jyavenard]: https://github.com/jyavenard +[@k1rd3rf]: https://github.com/k1rd3rf +[@koying]: https://github.com/koying +[@kukulich]: https://github.com/kukulich +[@lanrat]: https://github.com/lanrat +[@logan893]: https://github.com/logan893 +[@ludeeus]: https://github.com/ludeeus +[@madpilot]: https://github.com/madpilot +[@mampfes]: https://github.com/mampfes +[@mbo18]: https://github.com/mbo18 +[@mciupak]: https://github.com/mciupak +[@mdz]: https://github.com/mdz +[@mib1185]: https://github.com/mib1185 +[@michaelarnauts]: https://github.com/michaelarnauts +[@milanmeu]: https://github.com/milanmeu +[@mindmelting]: https://github.com/mindmelting +[@nielstron]: https://github.com/nielstron +[@niklasastrom]: https://github.com/niklasastrom +[@ocalvo]: https://github.com/ocalvo +[@ol-iver]: https://github.com/ol-iver +[@oncleben31]: https://github.com/oncleben31 +[@oxan]: https://github.com/oxan +[@popoviciri]: https://github.com/popoviciri +[@puddly]: https://github.com/puddly +[@pvizeli]: https://github.com/pvizeli +[@raman325]: https://github.com/raman325 +[@rdfurman]: https://github.com/rdfurman +[@regevbr]: https://github.com/regevbr +[@roelvanderark]: https://github.com/roelvanderark +[@rytilahti]: https://github.com/rytilahti +[@scop]: https://github.com/scop +[@spacegaier]: https://github.com/spacegaier +[@starkillerOG]: https://github.com/starkillerOG +[@stefanroelofs]: https://github.com/stefanroelofs +[@thecode]: https://github.com/thecode +[@timmo001]: https://github.com/timmo001 +[@timn]: https://github.com/timn +[@tkdrob]: https://github.com/tkdrob +[@tube0013]: https://github.com/tube0013 +[@uvjustin]: https://github.com/uvjustin +[@vilppuvuorinen]: https://github.com/vilppuvuorinen +[@wranglatang]: https://github.com/wranglatang +[@wsowa]: https://github.com/wsowa +[@xdissent]: https://github.com/xdissent +[@yuvalabou]: https://github.com/yuvalabou +[@zlinoliver]: https://github.com/zlinoliver +[aemet docs]: /integrations/aemet/ +[airly docs]: /integrations/airly/ +[airnow docs]: /integrations/airnow/ +[airthings docs]: /integrations/airthings/ +[airvisual docs]: /integrations/airvisual/ +[alexa docs]: /integrations/alexa/ +[almond docs]: /integrations/almond/ +[amberelectric docs]: /integrations/amberelectric/ +[ambient_station docs]: /integrations/ambient_station/ +[amcrest docs]: /integrations/amcrest/ +[apcupsd docs]: /integrations/apcupsd/ +[api docs]: /integrations/api/ +[apple_tv docs]: /integrations/apple_tv/ +[aqualogic docs]: /integrations/aqualogic/ +[asuswrt docs]: /integrations/asuswrt/ +[august docs]: /integrations/august/ +[awair docs]: /integrations/awair/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[bond docs]: /integrations/bond/ +[bosch_shc docs]: /integrations/bosch_shc/ +[broadlink docs]: /integrations/broadlink/ +[camera docs]: /integrations/camera/ +[cert_expiry docs]: /integrations/cert_expiry/ +[cloud docs]: /integrations/cloud/ +[coinbase docs]: /integrations/coinbase/ +[comfoconnect docs]: /integrations/comfoconnect/ +[compensation docs]: /integrations/compensation/ +[crownstone docs]: /integrations/crownstone/ +[daikin docs]: /integrations/daikin/ +[debugpy docs]: /integrations/debugpy/ +[deconz docs]: /integrations/deconz/ +[default_config docs]: /integrations/default_config/ +[demo docs]: /integrations/demo/ +[denonavr docs]: /integrations/denonavr/ +[device_automation docs]: /integrations/device_automation/ +[devolo_home_control docs]: /integrations/devolo_home_control/ +[dhcp docs]: /integrations/dhcp/ +[directv docs]: /integrations/directv/ +[discogs docs]: /integrations/discogs/ +[discord docs]: /integrations/discord/ +[discovery docs]: /integrations/discovery/ +[dlna_dmr docs]: /integrations/dlna_dmr/ +[doods docs]: /integrations/doods/ +[ebox docs]: /integrations/ebox/ +[ecobee docs]: /integrations/ecobee/ +[econet docs]: /integrations/econet/ +[efergy docs]: /integrations/efergy/ +[elkm1 docs]: /integrations/elkm1/ +[emulated_hue docs]: /integrations/emulated_hue/ +[energy docs]: /integrations/energy/ +[enphase_envoy docs]: /integrations/enphase_envoy/ +[entur_public_transport docs]: /integrations/entur_public_transport/ +[epson docs]: /integrations/epson/ +[esphome docs]: /integrations/esphome/ +[faa_delays docs]: /integrations/faa_delays/ +[fido docs]: /integrations/fido/ +[filter docs]: /integrations/filter/ +[fitbit docs]: /integrations/fitbit/ +[fjaraskupan docs]: /integrations/fjaraskupan/ +[flick_electric docs]: /integrations/flick_electric/ +[flipr docs]: /integrations/flipr/ +[flume docs]: /integrations/flume/ +[flunearyou docs]: /integrations/flunearyou/ +[folder_watcher docs]: /integrations/folder_watcher/ +[freebox docs]: /integrations/freebox/ +[freedompro docs]: /integrations/freedompro/ +[fritz docs]: /integrations/fritz/ +[fritzbox docs]: /integrations/fritzbox/ +[frontend docs]: /integrations/frontend/ +[generic docs]: /integrations/generic/ +[generic_thermostat docs]: /integrations/generic_thermostat/ +[github docs]: /integrations/github/ +[glances docs]: /integrations/glances/ +[goalzero docs]: /integrations/goalzero/ +[gogogate2 docs]: /integrations/gogogate2/ +[google_assistant docs]: /integrations/google_assistant/ +[gpmdp docs]: /integrations/gpmdp/ +[group docs]: /integrations/group/ +[growatt_server docs]: /integrations/growatt_server/ +[guardian docs]: /integrations/guardian/ +[habitica docs]: /integrations/habitica/ +[harmony docs]: /integrations/harmony/ +[hassio docs]: /integrations/hassio/ +[history docs]: /integrations/history/ +[hive docs]: /integrations/hive/ +[homekit docs]: /integrations/homekit/ +[homekit_controller docs]: /integrations/homekit_controller/ +[homematic docs]: /integrations/homematic/ +[honeywell docs]: /integrations/honeywell/ +[huawei_lte docs]: /integrations/huawei_lte/ +[hue docs]: /integrations/hue/ +[hydrawise docs]: /integrations/hydrawise/ +[icloud docs]: /integrations/icloud/ +[image docs]: /integrations/image/ +[image_processing docs]: /integrations/image_processing/ +[incomfort docs]: /integrations/incomfort/ +[input_number docs]: /integrations/input_number/ +[integration docs]: /integrations/integration/ +[intesishome docs]: /integrations/intesishome/ +[iotawatt docs]: /integrations/iotawatt/ +[iperf3 docs]: /integrations/iperf3/ +[iqvia docs]: /integrations/iqvia/ +[isy994 docs]: /integrations/isy994/ +[jewish_calendar docs]: /integrations/jewish_calendar/ +[kef docs]: /integrations/kef/ +[keyboard_remote docs]: /integrations/keyboard_remote/ +[knx docs]: /integrations/knx/ +[konnected docs]: /integrations/konnected/ +[kostal_plenticore docs]: /integrations/kostal_plenticore/ +[kraken docs]: /integrations/kraken/ +[lastfm docs]: /integrations/lastfm/ +[light docs]: /integrations/light/ +[logger docs]: /integrations/logger/ +[luftdaten docs]: /integrations/luftdaten/ +[lupusec docs]: /integrations/lupusec/ +[lutron docs]: /integrations/lutron/ +[lyric docs]: /integrations/lyric/ +[manual docs]: /integrations/manual/ +[melcloud docs]: /integrations/melcloud/ +[meteo_france docs]: /integrations/meteo_france/ +[meteoalarm docs]: /integrations/meteoalarm/ +[meteoclimatic docs]: /integrations/meteoclimatic/ +[miflora docs]: /integrations/miflora/ +[mill docs]: /integrations/mill/ +[mobile_app docs]: /integrations/mobile_app/ +[modbus docs]: /integrations/modbus/ +[modem_callerid docs]: /integrations/modem_callerid/ +[moon docs]: /integrations/moon/ +[motion_blinds docs]: /integrations/motion_blinds/ +[mqtt docs]: /integrations/mqtt/ +[nanoleaf docs]: /integrations/nanoleaf/ +[nest docs]: /integrations/nest/ +[netatmo docs]: /integrations/netatmo/ +[netgear docs]: /integrations/netgear/ +[network docs]: /integrations/network/ +[nightscout docs]: /integrations/nightscout/ +[nissan_leaf docs]: /integrations/nissan_leaf/ +[notify docs]: /integrations/notify/ +[notion docs]: /integrations/notion/ +[nut docs]: /integrations/nut/ +[nws docs]: /integrations/nws/ +[onboarding docs]: /integrations/onboarding/ +[onewire docs]: /integrations/onewire/ +[onkyo docs]: /integrations/onkyo/ +[onvif docs]: /integrations/onvif/ +[opencv docs]: /integrations/opencv/ +[opengarage docs]: /integrations/opengarage/ +[openuv docs]: /integrations/openuv/ +[ovo_energy docs]: /integrations/ovo_energy/ +[ozw docs]: /integrations/ozw/ +[panasonic_viera docs]: /integrations/panasonic_viera/ +[pi_hole docs]: /integrations/pi_hole/ +[picnic docs]: /integrations/picnic/ +[ping docs]: /integrations/ping/ +[plaato docs]: /integrations/plaato/ +[plex docs]: /integrations/plex/ +[point docs]: /integrations/point/ +[poolsense docs]: /integrations/poolsense/ +[powerwall docs]: /integrations/powerwall/ +[proxy docs]: /integrations/proxy/ +[ps4 docs]: /integrations/ps4/ +[qbittorrent docs]: /integrations/qbittorrent/ +[qnap docs]: /integrations/qnap/ +[qrcode docs]: /integrations/qrcode/ +[rachio docs]: /integrations/rachio/ +[radiotherm docs]: /integrations/radiotherm/ +[rainmachine docs]: /integrations/rainmachine/ +[recollect_waste docs]: /integrations/recollect_waste/ +[recorder docs]: /integrations/recorder/ +[reddit docs]: /integrations/reddit/ +[renault docs]: /integrations/renault/ +[repetier docs]: /integrations/repetier/ +[rfxtrx docs]: /integrations/rfxtrx/ +[rituals_perfume_genie docs]: /integrations/rituals_perfume_genie/ +[sabnzbd docs]: /integrations/sabnzbd/ +[samsungtv docs]: /integrations/samsungtv/ +[scrape docs]: /integrations/scrape/ +[screenlogic docs]: /integrations/screenlogic/ +[sendgrid docs]: /integrations/sendgrid/ +[sensor docs]: /integrations/sensor/ +[seven_segments docs]: /integrations/seven_segments/ +[shelly docs]: /integrations/shelly/ +[sht31 docs]: /integrations/sht31/ +[sia docs]: /integrations/sia/ +[sighthound docs]: /integrations/sighthound/ +[simplisafe docs]: /integrations/simplisafe/ +[sma docs]: /integrations/sma/ +[smappee docs]: /integrations/smappee/ +[smart_meter_texas docs]: /integrations/smart_meter_texas/ +[smarttub docs]: /integrations/smarttub/ +[smhi docs]: /integrations/smhi/ +[sms docs]: /integrations/sms/ +[solaredge docs]: /integrations/solaredge/ +[solaredge_local docs]: /integrations/solaredge_local/ +[solarlog docs]: /integrations/solarlog/ +[sonarr docs]: /integrations/sonarr/ +[sonos docs]: /integrations/sonos/ +[speedtestdotnet docs]: /integrations/speedtestdotnet/ +[spotify docs]: /integrations/spotify/ +[srp_energy docs]: /integrations/srp_energy/ +[ssdp docs]: /integrations/ssdp/ +[stream docs]: /integrations/stream/ +[surepetcare docs]: /integrations/surepetcare/ +[switchbot docs]: /integrations/switchbot/ +[switcher_kis docs]: /integrations/switcher_kis/ +[syncthru docs]: /integrations/syncthru/ +[synology_dsm docs]: /integrations/synology_dsm/ +[system_bridge docs]: /integrations/system_bridge/ +[systemmonitor docs]: /integrations/systemmonitor/ +[tado docs]: /integrations/tado/ +[tautulli docs]: /integrations/tautulli/ +[telegram_bot docs]: /integrations/telegram_bot/ +[tellduslive docs]: /integrations/tellduslive/ +[template docs]: /integrations/template/ +[tensorflow docs]: /integrations/tensorflow/ +[tesla docs]: /integrations/tesla/ +[tibber docs]: /integrations/tibber/ +[toon docs]: /integrations/toon/ +[touchline docs]: /integrations/touchline/ +[tplink docs]: /integrations/tplink/ +[trackr docs]: /integrations/trackr/ +[tractive docs]: /integrations/tractive/ +[tradfri docs]: /integrations/tradfri/ +[trend docs]: /integrations/trend/ +[tuya docs]: /integrations/tuya/ +[twentemilieu docs]: /integrations/twentemilieu/ +[twitter docs]: /integrations/twitter/ +[unifi docs]: /integrations/unifi/ +[universal docs]: /integrations/universal/ +[updater docs]: /integrations/updater/ +[upnp docs]: /integrations/upnp/ +[usb docs]: /integrations/usb/ +[utility_meter docs]: /integrations/utility_meter/ +[vallox docs]: /integrations/vallox/ +[velbus docs]: /integrations/velbus/ +[version docs]: /integrations/version/ +[viaggiatreno docs]: /integrations/viaggiatreno/ +[vicare docs]: /integrations/vicare/ +[vilfo docs]: /integrations/vilfo/ +[vizio docs]: /integrations/vizio/ +[vultr docs]: /integrations/vultr/ +[watttime docs]: /integrations/watttime/ +[waze_travel_time docs]: /integrations/waze_travel_time/ +[webostv docs]: /integrations/webostv/ +[websocket_api docs]: /integrations/websocket_api/ +[wemo docs]: /integrations/wemo/ +[whirlpool docs]: /integrations/whirlpool/ +[wiffi docs]: /integrations/wiffi/ +[wilight docs]: /integrations/wilight/ +[withings docs]: /integrations/withings/ +[workday docs]: /integrations/workday/ +[xbox docs]: /integrations/xbox/ +[xiaomi_aqara docs]: /integrations/xiaomi_aqara/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[yeelight docs]: /integrations/yeelight/ +[youless docs]: /integrations/youless/ +[zeroconf docs]: /integrations/zeroconf/ +[zha docs]: /integrations/zha/ +[zoneminder docs]: /integrations/zoneminder/ +[zwave docs]: /integrations/zwave/ +[zwave_js docs]: /integrations/zwave_js/ diff --git a/source/_posts/2021-10-12-user-experiences-and-designers.markdown b/source/_posts/2021-10-12-user-experiences-and-designers.markdown new file mode 100644 index 00000000000..1282485e42a --- /dev/null +++ b/source/_posts/2021-10-12-user-experiences-and-designers.markdown @@ -0,0 +1,34 @@ +--- +layout: post +title: "User Experiences and Designers" +description: "UX design for Home assistant and how to contribute." +date: 2021-10-13 00:00:00 +date_formatted: "October 13, 2021" +author: Matthias de Baat +author_twitter: matthiasdebaat +comments: true +categories: +- Organization +og_image: /images/blog/2021-10-ux/social.png +--- + + + +About two months ago my phone kept buzzing with notifications. I got the kindest tweets after it was announced that I was joining Home Assistant as the first full-time UX designer. That enthusiasm is also reflected in the more than 500 registrations for our [user research group](https://forms.gle/5NSabxHJ3qkp7Vke9) and the many comments we received on design ideas [I've shared on Twitter](https://twitter.com/matthiasdebaat). + +## User Experiences +Home Assistant has a large group of users with a common goal: home automation that puts local control and privacy first. From our [analytics](https://analytics.home-assistant.io) we have over 85,000 users who opted in to share their data anonymously, but we know that there are a lot more. None of these houses and users are alike and may have different, perhaps conflicting interests. Here lies the power of UX. As [Scott Jenson](https://youtu.be/Mjup7Mrj7uU) shared in his fantastic keynote, UX offers perspective. Who are the users? What are their tasks? And what is their pain? What do they want to achieve? + +In the coming period, I will investigate what type of smart home users there are, what their needs are and what stands in the way of achieving this. + +## Designers +Last year alone, there were over 8,000 GitHub contributors to Home Assistant. That's really fantastic! With a Designer-to-Developer ratio of 1 per 8,000, it’s easy to get lost in the backend of design and forget the users. This can result in inconsistent user interfaces or designs that could be more user-friendly. For now we’re working on three areas. + +### UX contributors +We want to make it as easy for designers to contribute as it is for developers. There’s a lot a designer can contribute to. For example, making it easier to work with light groups or getting started with automating your house. If you have a design you really think we should look at? Would you like to help build our own Design System? Do you have experience with user testing? Do you have strategic design ideas? Want to organize an online design workshop? Or just want to meet fellow designers? Meet us at [devs_ux Discord channel](/join-chat) or join us on [GitHub discussions](https://github.com/home-assistant/frontend/discussions/10147). + +### Tooling +We want it to be easy to start creating and iterating on design mockups for Home Assistant. We want anyone that is interested to be able to jump in. To achieve this we’ve been hard at work at re-creating the components that make up the Home Assistant interface as a [DesignKit for Figma](https://www.figma.com/community/file/967153512097289521/Home-Assistant-DesignKit). This allows anyone to experiment with the Home Assistant interface and quickly try out different concepts. Try it yourself and feel free to share your designs. + +### Documentation +With clear guidelines, you can ensure speed and quality. That’s why we’re working on design documentation that will be available soon. Its goal is to help designers and developers make better choices. Got suggestions or want to help with our guidelines? Meet us at [devs_ux Discord channel](/join-chat). diff --git a/source/_redirects b/source/_redirects index 7b3762d5e8c..e21f15067cf 100644 --- a/source/_redirects +++ b/source/_redirects @@ -1066,6 +1066,7 @@ /integrations/climate.modbus /integrations/modbus /integrations/cover.modbus /integrations/modbus /integrations/fan.xiaomi_miio /integrations/xiaomi_miio +/integrations/google /integrations/calendar.google /integrations/light.xiaomi_miio /integrations/xiaomi_miio /integrations/lovelace /lovelace /integrations/remote.xiaomi_miio /integrations/xiaomi_miio @@ -2043,6 +2044,7 @@ /integrations/scene.knx /integrations/knx#scene /integrations/sensor.knx /integrations/knx#sensor /integrations/switch.knx /integrations/knx#switch +/integrations/trace /docs/automation/troubleshooting /integrations/weather.knx /integrations/knx#weather /integrations/zigbee /integrations/xbee /integrations/hassio /hassio diff --git a/source/blue/index.html b/source/blue/index.html index 0419884d72e..8a741f05aee 100644 --- a/source/blue/index.html +++ b/source/blue/index.html @@ -358,7 +358,7 @@ frontpage_image: /images/frontpage/blue-frontpage.jpg
No Wi-Fi or Bluetooth
- Support for Z-Wave and Zigbee by external USB adaptor + Support for Z-Wave and Zigbee by external USB adapter (not included)
diff --git a/source/common-tasks/os.markdown b/source/common-tasks/os.markdown index 4baafcb6fbb..6f4e629c12f 100644 --- a/source/common-tasks/os.markdown +++ b/source/common-tasks/os.markdown @@ -16,6 +16,7 @@ This section will provide guides to some common tasks and information which you {% include common-tasks/commandline.md %} {% include common-tasks/lost_password.md %} {% include common-tasks/third-party-addons.md %} +{% include common-tasks/data_disk.md %} {% include common-tasks/flashing_n2_otg.md %} {% include common-tasks/enable_i2c.md %} diff --git a/source/developers/cla.markdown b/source/developers/cla.markdown index b703da1bace..831db758425 100644 --- a/source/developers/cla.markdown +++ b/source/developers/cla.markdown @@ -30,7 +30,7 @@ By making a contribution to this project, I certify that: ## Attribution -The text of this license is available under the [Creative Commons Attribution-ShareAlike 3.0 Unported License](http://creativecommons.org/licenses/by-sa/3.0/). It is based on the Linux [Developer Certificate Of Origin](http://elinux.org/Developer_Certificate_Of_Origin), but is modified to explicitly use the Apache 2.0 license +The text of this license is available under the [Creative Commons Attribution-ShareAlike 3.0 Unported License](https://creativecommons.org/licenses/by-sa/3.0/). It is based on the Linux [Developer Certificate Of Origin](https://elinux.org/Developer_Certificate_Of_Origin), but is modified to explicitly use the Apache 2.0 license and not mention sign-off. ## Signing diff --git a/source/help/index.markdown b/source/help/index.markdown index 47654de0d16..44bfe0f67d7 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -50,6 +50,7 @@ Looking for [talking points](/help/talking-points/) or [trivia](/help/trivia)? Don't miss the regular [Home Assistant podcasts](https://hasspodcast.io/). +- [How to achieve smart home nirvana (or, home automation without subscription)](https://arstechnica.com/information-technology/2021/03/how-to-achieve-smart-home-nirvana-or-home-automation-without-subscription/) - March 2021 - [Why I use Home Assistant for open source home automation](https://opensource.com/article/20/11/home-assistant) - November 2020 - [Home Assistant, the Python IoT hub](https://lwn.net/Articles/822350/) - June 2020 - [Thomas-Krenn-Award 2020: Dino, Teckids und Home Assistant](https://www.thomas-krenn.com/de/tkmag/allgemein/gewinner-thomas-krenn-award-2020/) - June 2020 @@ -67,8 +68,8 @@ Don't miss the regular [Home Assistant podcasts](https://hasspodcast.io/). - [The winners of the Thomas-Krenn-Awards 2018](https://www.thomas-krenn.com/de/tkmag/allgemein/die-gewinner-des-thomas-krenn-awards-2018-stehen-fest/) - March 2018 - [Best of Open Source Smart Home: Home Assistant vs OpenHAB](https://smarthome.university/your-smart-home-platform-home-assistant-vs-openhab/) - February 2018 - [Hausautomations-Schaltzentrale Home Assistant auf Python-Basis](https://www.heise.de/ct/ausgabe/2017-26-Hausautomations-Schaltzentrale-Home-Assistant-3909532.html) - December 2017 -- [Using Home Assistant the ARTIK Cloud](http://web.archive.org/web/20191028191303/https://developer.artik.io/documentation/developer-guide/wireless-iot/hass.html) - September 2017 -- [Control home automation hardware with Home Assistant](http://www.linux-magazine.com/Issues/2017/203/Home-Assistant) - August 2017 +- [Using Home Assistant the ARTIK Cloud](https://web.archive.org/web/20191028191303/https://developer.artik.io/documentation/developer-guide/wireless-iot/hass.html) - September 2017 +- [Control home automation hardware with Home Assistant](https://www.linux-magazine.com/Issues/2017/203/Home-Assistant) - August 2017 - [Smart Home Home Assistant KNX Alexa Sprachsteuerung](https://onesmarthome.de/smart-home-home-assistant-knx-alexa-sprachsteuerung/) - August 2017 - [Episode #122: Home Assistant: Pythonic Home Automation](https://talkpython.fm/episodes/show/122/home-assistant-pythonic-home-automation) - July 2017 - [Smart Home Home Assistant Konfiguration mit YAML](https://onesmarthome.de/smart-home-home-assistant-konfiguration/) - July 2017 @@ -84,7 +85,7 @@ Don't miss the regular [Home Assistant podcasts](https://hasspodcast.io/). - [Episode #11](https://pythonbytes.fm/episodes/show/11/django-2.0-is-dropping-python-2-entirely-pipenv-for-profile-functionality-and-pythonic-home-automation) at minute 15:20 by [Python Bytes](https://pythonbytes.fm/) - January 2017 - [Now you can hide your smart home on the darknet](https://www.wired.com/2016/07/now-can-hide-smart-home-darknet/) - July 2016 - [Home Assistant: The Python Approach to Home Automation](https://www.linux.com/news/home-assistant-python-approach-home-automation-video) - June 2016 -- [Secure home automation, without clouds or dedicated hubs](http://linuxgizmos.com/secure-home-automation-without-clouds-or-dedicated-hubs/) - June 2016 +- [Secure home automation, without clouds or dedicated hubs](https://linuxgizmos.com/secure-home-automation-without-clouds-or-dedicated-hubs/) - June 2016 - [Weekend Project: Setting up Home Assistant on your PC or Mac](https://www.automatedhome.co.uk/software/weekend-project-setting-up-home-assistant-on-your-pc-or-mac.html) by [automated home](https://www.automatedhome.co.uk/) - April 2016 - [Episode 105 - DIY Home Automation Roundup](https://www.hometech.fm/shows/105) by [HomeTech.fm](https://www.hometech.fm/) - April 2016 - [5 open source home automation tools](https://opensource.com/life/16/3/5-open-source-home-automation-tools) by [opensource.com](https://opensource.com) - March 2016 diff --git a/source/help/trivia.markdown b/source/help/trivia.markdown index 094b1e4762a..532c7c82a30 100644 --- a/source/help/trivia.markdown +++ b/source/help/trivia.markdown @@ -16,7 +16,7 @@ The website [https://www.home-assistant.io](/) was launched on December 18, 2014 ## Logo -The current logo was created by [Jeremy Geltman](http://jeremygeltman.com/). Further details can be found in the [announcement](/blog/2015/03/08/new-logo/). +The current logo was created by [Jeremy Geltman](https://jeremygeltman.com/). Further details can be found in the [announcement](/blog/2015/03/08/new-logo/). ## License diff --git a/source/images/blog/2021-10-ux/social.png b/source/images/blog/2021-10-ux/social.png new file mode 100644 index 00000000000..7cc622512bf Binary files /dev/null and b/source/images/blog/2021-10-ux/social.png differ diff --git a/source/images/blog/2021-10/materialdesignicons.png b/source/images/blog/2021-10/materialdesignicons.png new file mode 100644 index 00000000000..8622fc1f9fe Binary files /dev/null and b/source/images/blog/2021-10/materialdesignicons.png differ diff --git a/source/images/blog/2021-10/social.png b/source/images/blog/2021-10/social.png new file mode 100644 index 00000000000..ce7a8c483f5 Binary files /dev/null and b/source/images/blog/2021-10/social.png differ diff --git a/source/images/blog/2021-10/z-wave-s2.png b/source/images/blog/2021-10/z-wave-s2.png new file mode 100644 index 00000000000..cbb740a0bcc Binary files /dev/null and b/source/images/blog/2021-10/z-wave-s2.png differ diff --git a/source/images/docs/automation-editor/create-automation.png b/source/images/docs/automation-editor/create-automation.png new file mode 100644 index 00000000000..b862c025f37 Binary files /dev/null and b/source/images/docs/automation-editor/create-automation.png differ diff --git a/source/images/docs/automation-editor/new-action.png b/source/images/docs/automation-editor/new-action.png index 9dc7679f034..992b679f82f 100644 Binary files a/source/images/docs/automation-editor/new-action.png and b/source/images/docs/automation-editor/new-action.png differ diff --git a/source/images/docs/automation-editor/new-automation.png b/source/images/docs/automation-editor/new-automation.png index 9bae39fc709..0014365ba0a 100644 Binary files a/source/images/docs/automation-editor/new-automation.png and b/source/images/docs/automation-editor/new-automation.png differ diff --git a/source/images/docs/automation-editor/new-trigger.png b/source/images/docs/automation-editor/new-trigger.png index d3b2ec5a301..4569b0e1187 100644 Binary files a/source/images/docs/automation-editor/new-trigger.png and b/source/images/docs/automation-editor/new-trigger.png differ diff --git a/source/images/haos/usb-data-disk.png b/source/images/haos/usb-data-disk.png new file mode 100644 index 00000000000..c06cebdf66b Binary files /dev/null and b/source/images/haos/usb-data-disk.png differ diff --git a/source/images/screenshots/hp_ilo_sensors.png b/source/images/screenshots/hp_ilo_sensors.png index 8ebdb3c1b7c..0a9e1cd6f8d 100644 Binary files a/source/images/screenshots/hp_ilo_sensors.png and b/source/images/screenshots/hp_ilo_sensors.png differ diff --git a/source/images/screenshots/move-datadisk.png b/source/images/screenshots/move-datadisk.png new file mode 100644 index 00000000000..b581bbdfdf0 Binary files /dev/null and b/source/images/screenshots/move-datadisk.png differ diff --git a/source/images/supported_brands/lametric.png b/source/images/supported_brands/lametric.png deleted file mode 100644 index 1202a68a378..00000000000 Binary files a/source/images/supported_brands/lametric.png and /dev/null differ diff --git a/source/images/supported_brands/linux_battery.png b/source/images/supported_brands/linux_battery.png deleted file mode 100644 index 935227eeef5..00000000000 Binary files a/source/images/supported_brands/linux_battery.png and /dev/null differ diff --git a/source/images/supported_brands/maxcube.png b/source/images/supported_brands/maxcube.png deleted file mode 100644 index e77fc470498..00000000000 Binary files a/source/images/supported_brands/maxcube.png and /dev/null differ diff --git a/source/images/supported_brands/rocket.png b/source/images/supported_brands/rocket.png deleted file mode 100644 index 15f98dac6e8..00000000000 Binary files a/source/images/supported_brands/rocket.png and /dev/null differ diff --git a/source/installation/index.html b/source/installation/index.html index 124d6450494..f2ab7eefba5 100644 --- a/source/installation/index.html +++ b/source/installation/index.html @@ -18,7 +18,7 @@ toc: true

  • Home Assistant Operating System: Minimal Operating System optimized to power Home Assistant. - It comes with Supervisor to manage Home Assistant Core and pre-installed add-ons. Recommended installation method.
  • + It comes with Supervisor to manage Home Assistant Core and Add-ons. Recommended installation method.
  • Home Assistant Container: Standalone container-based installation of Home Assistant Core (e.g. Docker).

There are two alternative installation methods available for experienced users:

diff --git a/source/lovelace/badges.markdown b/source/lovelace/badges.markdown index 18f40ebb0c2..61e0bc7819e 100644 --- a/source/lovelace/badges.markdown +++ b/source/lovelace/badges.markdown @@ -30,7 +30,7 @@ name: default: Name of entity icon: required: false - description: Overwrites icon or entity picture. You can use any icon from [MaterialDesignIcons.com](http://materialdesignicons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. + description: Overwrites icon or entity picture. You can use any icon from [MaterialDesignIcons.com](https://materialdesignicons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. type: string default: Entity domain icon image: @@ -87,7 +87,7 @@ name: type: string icon: required: false - description: Overwrites icon or entity picture. You can use any icon from [MaterialDesignIcons.com](http://materialdesignicons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. + description: Overwrites icon or entity picture. You can use any icon from [MaterialDesignIcons.com](https://materialdesignicons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. type: string image: required: false diff --git a/source/lovelace/dashboards.markdown b/source/lovelace/dashboards.markdown index b1448a8db71..2a4d909c6ef 100644 --- a/source/lovelace/dashboards.markdown +++ b/source/lovelace/dashboards.markdown @@ -110,7 +110,7 @@ dashboards: type: string icon: required: false - description: The icon to show in the sidebar. You can use any icon from [MaterialDesignIcons.com](http://materialdesignicons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. + description: The icon to show in the sidebar. You can use any icon from [MaterialDesignIcons.com](https://materialdesignicons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. type: string show_in_sidebar: required: false @@ -191,4 +191,4 @@ views: title: Lovelace content: > Welcome to your **Lovelace UI**. -``` \ No newline at end of file +``` diff --git a/source/lovelace/header-footer.markdown b/source/lovelace/header-footer.markdown index b8dee843bdc..f7257f96c09 100644 --- a/source/lovelace/header-footer.markdown +++ b/source/lovelace/header-footer.markdown @@ -69,7 +69,7 @@ entities: type: string icon: required: false - description: Override the entity icon. You can use any icon from [MaterialDesignIcons.com](http://materialdesignicons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. + description: Override the entity icon. You can use any icon from [MaterialDesignIcons.com](https://materialdesignicons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. type: string image: required: false diff --git a/source/lovelace/views.markdown b/source/lovelace/views.markdown index c8fa471b74b..c8d9f0deb01 100644 --- a/source/lovelace/views.markdown +++ b/source/lovelace/views.markdown @@ -155,7 +155,7 @@ views: default: view index icon: required: false - description: Icon-name from Material Design Icons. You can use any icon from [MaterialDesignIcons.com](http://materialdesignicons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. + description: Icon-name from Material Design Icons. You can use any icon from [MaterialDesignIcons.com](https://materialdesignicons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. type: string background: required: false