From 7fdf908bb9c024f5593b61c26f18a4c7575e0acf Mon Sep 17 00:00:00 2001 From: andrekir Date: Sat, 18 Dec 2021 00:52:54 -0300 Subject: [PATCH 01/24] update android docs --- website/docs/software/android/usage.md | 56 ++++++++++++------ .../img/android/android-open-links-sm1.png | Bin 0 -> 12275 bytes .../img/android/android-open-links-sm2.png | Bin 0 -> 10574 bytes .../img/android/android-open-with-c.png | Bin 0 -> 22638 bytes .../static/img/android/android-open-with.png | Bin 0 -> 87113 bytes 5 files changed, 38 insertions(+), 18 deletions(-) create mode 100644 website/static/img/android/android-open-links-sm1.png create mode 100644 website/static/img/android/android-open-links-sm2.png create mode 100644 website/static/img/android/android-open-with-c.png create mode 100644 website/static/img/android/android-open-with.png diff --git a/website/docs/software/android/usage.md b/website/docs/software/android/usage.md index 1fcae666..b6f4dd71 100644 --- a/website/docs/software/android/usage.md +++ b/website/docs/software/android/usage.md @@ -18,6 +18,10 @@ You will need a device with Meshtastic installed to go any further. See the [get Open the Settings tab (last tab), and it should look similar to the screen below. It shows any Meshtastic devices that are found over Bluetooth. +:::note +Android requires location permission granted and location must be turned on to find new devices via bluetooth. You can turn it off again afterwards. +::: + [![Device available to select](/img/android/android-settings-deselected-c.png)](/img/android/android-settings-deselected.png) 1. Select the Device by name, "Meshtastic_c830" in the example below. (You will see any active devices within range, so make sure to get the right one.) @@ -68,25 +72,39 @@ The app will generate a new QR code on the screen, and this encodes the channel ### Join a channel -If another user shares a QR code, you should be able to scan it with your camera (phones with Android 9 or later will recognise QR codes). +If another user shares a QR code, you will be able to scan it with your camera. If the channel is shared as a file or link via the Share button, you can click on the file or link and follow similar steps. -1. You will see a message like Tap here to go to "www.meshtastic.org" in your browser. -2. Proceed and it will launch the Meshtastic app, and you should see a message like "Do you want to switch to the 'Owl Team' channel?". -3. Accept this, and the app will change to this new channel. You will lose any current channel setting! +You should see a message with the option "open with Meshtastic". + +[![Open with Meshtastic](/img/android/android-open-with-c.png)](/img/android/android-open-with.png) + +
+ Troubleshooting: Can't "open with Meshtastic". +
+
+ If you don't see "Meshtastic" as an option to open the file or link with: +
+
+ 1. Go to Android Settings > Apps > Default apps > Meshtastic > Opening links
+
+ [![Links1](/img/android/android-open-links-sm1.png)](/img/android/android-open-links-sm1.png) [![Links2](/img/android/android-open-links-sm2.png)](/img/android/android-open-links-sm1.png) +
+ 2. Make sure you have in "links/web address": www.meshtastic.org/> + 3. If you see the option "Open the supported links" make sure it is enabled.
+ 4. Try again! +
+
+
+ +Proceed and you should see a message like "Do you want to switch to the 'Owl Team' channel?". +Accept this, and the app will change to this new channel. You will lose any current channel setting! [![Accept new channel](/img/android/android-accept-channel-c.png)](/img/android/android-accept-channel.png) -If the channel is shared as a link via a message, or email, you can click on the link and follow similar steps. - :::note -You must use a link or a QR Code to Join a Channel. Setting the Channel Settings to the same Name and Options will not work as there is also a shared key encoded in the link. +Setting the same Name and Options will not work as there is also a unique pre-shared key encoded in the channel. ::: -:::note -Your app must be connected to an active Meshtastic device for the link or QR Code to work. -::: - - You can test changing channels with the QR code shown below. ![Meshtastic Default Channel](/img/android/default-channel.png) @@ -95,12 +113,14 @@ You can test changing channels with the QR code shown below. Various data-rates are selectable when configuring a channel and are inversely proportional to the theoretical range of the devices: -| Channel setting | Data-rate | -|----------------------------|----------------------| -| Short range (but fast) | 21.875 kbps | -| Medium range (but fast) | 5.469 kbps | -| Long range (but slower) | 0.275 kbps | -| Very long range (but slow) | 0.183 kbps (default) | +| Channel setting | Data-rate | +|------------------------|----------------------| +| Short Range / Fast) | 19346.94 bps | +| Short Range / Slow) | 4800.00 bps | +| Medium Range / Fast) | 1227.18 bps | +| Medium Range / Slow) | 763.29 bps | +| Long Range / Fast) | 196.74 bps | +| long Range / Slow) | 136.71 bps (default) | ### Send a message diff --git a/website/static/img/android/android-open-links-sm1.png b/website/static/img/android/android-open-links-sm1.png new file mode 100644 index 0000000000000000000000000000000000000000..72a1efd4172ede71153ee18ce4b22d4186ebfc32 GIT binary patch literal 12275 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 vB*-}-$$o-ez9s{U$6vZ1vjYIzrn4$dw literal 0 HcmV?d00001 diff --git a/website/static/img/android/android-open-with-c.png b/website/static/img/android/android-open-with-c.png new file mode 100644 index 0000000000000000000000000000000000000000..c5285c3ad5f20d4b9f6a119ae1dd2fec6318a231 GIT binary patch literal 22638 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 HdmQp#gNwEb literal 0 HcmV?d00001 diff --git a/website/static/img/android/android-open-with.png b/website/static/img/android/android-open-with.png new file mode 100644 index 0000000000000000000000000000000000000000..c15924ec5f33c6e88bf3a542858f32d369733679 GIT binary patch literal 87113 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 Gkz4z` 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 Date: Sat, 18 Dec 2021 23:16:53 -0300 Subject: [PATCH 02/24] remove nested images --- website/docs/software/android/usage.md | 12 +++--------- .../img/android/android-open-links-sm1.png | Bin 12275 -> 0 bytes .../img/android/android-open-links-sm2.png | Bin 10574 -> 0 bytes 3 files changed, 3 insertions(+), 9 deletions(-) delete mode 100644 website/static/img/android/android-open-links-sm1.png delete mode 100644 website/static/img/android/android-open-links-sm2.png diff --git a/website/docs/software/android/usage.md b/website/docs/software/android/usage.md index b6f4dd71..e5edde69 100644 --- a/website/docs/software/android/usage.md +++ b/website/docs/software/android/usage.md @@ -72,7 +72,7 @@ The app will generate a new QR code on the screen, and this encodes the channel ### Join a channel -If another user shares a QR code, you will be able to scan it with your camera. If the channel is shared as a file or link via the Share button, you can click on the file or link and follow similar steps. +If another user shares a QR code, you will be able to scan it with your camera. If the channel is shared as a file or link via the Share button, you can click on the file or link and follow similar steps. You should see a message with the option "open with Meshtastic". @@ -82,16 +82,10 @@ You should see a message with the option "open with Meshtastic".

Troubleshooting: Can't "open with Meshtastic".
- If you don't see "Meshtastic" as an option to open the file or link with: -
-
+ If you don't see "Meshtastic" as an option to open the file or link with:
1. Go to Android Settings > Apps > Default apps > Meshtastic > Opening links
-
- [![Links1](/img/android/android-open-links-sm1.png)](/img/android/android-open-links-sm1.png) [![Links2](/img/android/android-open-links-sm2.png)](/img/android/android-open-links-sm1.png) -
- 2. Make sure you have in "links/web address": www.meshtastic.org/> + 2. Make sure you have in "links/web address": www.meshtastic.org
3. If you see the option "Open the supported links" make sure it is enabled.
- 4. Try again!
diff --git a/website/static/img/android/android-open-links-sm1.png b/website/static/img/android/android-open-links-sm1.png deleted file mode 100644 index 72a1efd4172ede71153ee18ce4b22d4186ebfc32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12275 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 vB*-}-$$o-ez9s{U$6vZ1vjYIzrn4$dw From 03b7125e3e75d5367aea57b0210f2f05e8901031 Mon Sep 17 00:00:00 2001 From: andrekir Date: Tue, 21 Dec 2021 01:25:37 -0300 Subject: [PATCH 03/24] update sleep period --- website/docs/software/android/usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/software/android/usage.md b/website/docs/software/android/usage.md index e5edde69..9699c59b 100644 --- a/website/docs/software/android/usage.md +++ b/website/docs/software/android/usage.md @@ -166,7 +166,7 @@ This allows you to change the frequency with which your location is broadcast ac #### Device sleep period -To use as little power as possible while running on battery, ESP32 based devices go into a sleep mode. Unfortunately, during this sleep mode they turn off their Bluetooth radio. They can be woken early from this sleep by either receiving a message over LoRa (the LoRa receiver never switches off), of by pressing a program button where there is one on the device. This setting allows the length of the sleep mode to be changed from the default of 300 seconds (5 minutes). To keep the bluetooth link alive for eight hours (any usage of the bluetooth protcol from your phone will reset this timer), set this to 28800 seconds. +By default, ESP32 devices will enter sleep mode after 300 seconds of inactivity to save battery power. Unfortunately, this will also turn off the Bluetooth radio. They can be woken by either receiving a message over LoRa (the LoRa receiver never switches off), or by pressing a program button when there is one on the device. For example, to keep the Bluetooth link awake for eight hours (any usage of the Bluetooth protocol from your phone will reset this timer), set this to 28800 seconds. ### Debug page From 180e7f20608130a1338e1ad1d22280c6ec6d60ee Mon Sep 17 00:00:00 2001 From: Sacha Weatherstone Date: Tue, 21 Dec 2021 22:28:51 +1100 Subject: [PATCH 04/24] Add prisma DB model --- .gitignore | 1 + prisma/.env.example | 1 + prisma/schema.prisma | 61 ++ website/package.json | 21 +- website/src/utils/prisma.ts | 3 + website/yarn.lock | 1999 ++++++++++++++++++++--------------- 6 files changed, 1233 insertions(+), 853 deletions(-) create mode 100644 prisma/.env.example create mode 100644 prisma/schema.prisma create mode 100644 website/src/utils/prisma.ts diff --git a/.gitignore b/.gitignore index 17484799..1125e1d0 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ node_modules/ build .vercel .DS_Store +.env \ No newline at end of file diff --git a/prisma/.env.example b/prisma/.env.example new file mode 100644 index 00000000..a8dd343b --- /dev/null +++ b/prisma/.env.example @@ -0,0 +1 @@ +DATABASE_URL=postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=SCHEMA \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma new file mode 100644 index 00000000..78d86c95 --- /dev/null +++ b/prisma/schema.prisma @@ -0,0 +1,61 @@ +datasource db { + url = env("DATABASE_URL") + provider = "postgresql" +} + +generator client { + provider = "prisma-client-js" +} + +model Author { + id String @id @default(cuid()) + githubUsername String + bio String + + showcase Showcase[] +} + +model Showcase { + id String @id @default(cuid()) + title String + body String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + tags ShowcaseTag[] + nodes Node[] + materials Material[] + author Author @relation(fields: [authorId], references: [id]) + authorId String +} + +model Material { + id String @id @default(cuid()) + name String + details String + image String + url String + + showcases Showcase[] +} + +model Node { + id String @id @default(cuid()) + latitude String + longitude String + + showcase Showcase @relation(fields: [showcaseId], references: [id]) + showcaseId String + +} + +model ShowcaseTag { + id String @id @default(cuid()) + label String + description String + color String + + showcase Showcase @relation(fields: [showcaseId], references: [id]) + showcaseId String + +} diff --git a/website/package.json b/website/package.json index a1431ee6..57de4840 100644 --- a/website/package.json +++ b/website/package.json @@ -12,15 +12,19 @@ }, "dependencies": { "@algolia/client-search": "^4.11.0", - "@docusaurus/core": "^2.0.0-beta.9", - "@docusaurus/plugin-ideal-image": "^2.0.0-beta.9", - "@docusaurus/preset-classic": "^2.0.0-beta.9", + "@docusaurus/core": "^2.0.0-beta.13", + "@docusaurus/plugin-ideal-image": "^2.0.0-beta.13", + "@docusaurus/preset-classic": "^2.0.0-beta.13", "@mdx-js/react": "^1.6.22", - "esbuild-loader": "^2.16.0", + "@prisma/client": "^3.6.0", + "@supabase/supabase-js": "^1.28.6", + "esp-web-flasher": "^4.0.0", + "prisma": "^3.6.0", "react": "^17.0.2", "react-dom": "^17.0.2", "react-icons": "^4.3.1", - "swr": "^1.1.0", + "react-json-pretty": "^2.2.0", + "swr": "^1.1.1", "url-search-params-polyfill": "^8.1.1" }, "browserslist": { @@ -36,9 +40,10 @@ ] }, "devDependencies": { - "@docusaurus/module-type-aliases": "^2.0.0-beta.9", + "@docusaurus/module-type-aliases": "^2.0.0-beta.13", "@tsconfig/docusaurus": "^1.0.4", - "@types/node": "^16.11.12", - "typescript": "^4.5.2" + "@types/node": "^17.0.2", + "@types/w3c-web-serial": "^1.0.2", + "typescript": "^4.5.4" } } diff --git a/website/src/utils/prisma.ts b/website/src/utils/prisma.ts new file mode 100644 index 00000000..9b6c4ce3 --- /dev/null +++ b/website/src/utils/prisma.ts @@ -0,0 +1,3 @@ +import { PrismaClient } from '@prisma/client'; + +export const prisma = new PrismaClient(); diff --git a/website/yarn.lock b/website/yarn.lock index c0bd1383..24968935 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -159,19 +159,19 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.12.16", "@babel/core@^7.12.3": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.0.tgz#c4ff44046f5fe310525cc9eb4ef5147f0c5374d4" - integrity sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ== +"@babel/core@^7.15.5", "@babel/core@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.5.tgz#924aa9e1ae56e1e55f7184c8bf073a50d8677f5c" + integrity sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ== dependencies: "@babel/code-frame" "^7.16.0" - "@babel/generator" "^7.16.0" - "@babel/helper-compilation-targets" "^7.16.0" - "@babel/helper-module-transforms" "^7.16.0" - "@babel/helpers" "^7.16.0" - "@babel/parser" "^7.16.0" + "@babel/generator" "^7.16.5" + "@babel/helper-compilation-targets" "^7.16.3" + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helpers" "^7.16.5" + "@babel/parser" "^7.16.5" "@babel/template" "^7.16.0" - "@babel/traverse" "^7.16.0" + "@babel/traverse" "^7.16.5" "@babel/types" "^7.16.0" convert-source-map "^1.7.0" debug "^4.1.0" @@ -180,7 +180,7 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/generator@^7.12.15", "@babel/generator@^7.12.5", "@babel/generator@^7.16.0": +"@babel/generator@^7.12.5", "@babel/generator@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.0.tgz#d40f3d1d5075e62d3500bccb67f3daa8a95265b2" integrity sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew== @@ -189,6 +189,15 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.5.tgz#26e1192eb8f78e0a3acaf3eede3c6fc96d22bedf" + integrity sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA== + dependencies: + "@babel/types" "^7.16.0" + jsesc "^2.5.1" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz#9a1f0ebcda53d9a2d00108c4ceace6a5d5f1f08d" @@ -204,6 +213,14 @@ "@babel/helper-explode-assignable-expression" "^7.16.0" "@babel/types" "^7.16.0" +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.5.tgz#a8429d064dce8207194b8bf05a70a9ea828746af" + integrity sha512-3JEA9G5dmmnIWdzaT9d0NmFRgYnWUThLsDaL7982H0XqqWr56lRrsmwheXFMjR+TMl7QMBb6mzy9kvgr1lRLUA== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.16.0" + "@babel/types" "^7.16.0" + "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.0", "@babel/helper-compilation-targets@^7.16.3": version "7.16.3" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz#5b480cd13f68363df6ec4dc8ac8e2da11363cbf0" @@ -226,6 +243,19 @@ "@babel/helper-replace-supers" "^7.16.0" "@babel/helper-split-export-declaration" "^7.16.0" +"@babel/helper-create-class-features-plugin@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.5.tgz#5d1bcd096792c1ebec6249eebc6358eec55d0cad" + integrity sha512-NEohnYA7mkB8L5JhU7BLwcBdU3j83IziR9aseMueWGeAjblbul3zzb8UvJ3a1zuBiqCMObzCJHFqKIQE6hTVmg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-member-expression-to-functions" "^7.16.5" + "@babel/helper-optimise-call-expression" "^7.16.0" + "@babel/helper-replace-supers" "^7.16.5" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/helper-create-regexp-features-plugin@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz#06b2348ce37fccc4f5e18dcd8d75053f2a7c44ff" @@ -248,6 +278,13 @@ resolve "^1.14.2" semver "^6.1.2" +"@babel/helper-environment-visitor@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz#f6a7f38b3c6d8b07c88faea083c46c09ef5451b8" + integrity sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg== + dependencies: + "@babel/types" "^7.16.0" + "@babel/helper-explode-assignable-expression@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz#753017337a15f46f9c09f674cff10cee9b9d7778" @@ -285,6 +322,13 @@ dependencies: "@babel/types" "^7.16.0" +"@babel/helper-member-expression-to-functions@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.5.tgz#1bc9f7e87354e86f8879c67b316cb03d3dc2caab" + integrity sha512-7fecSXq7ZrLE+TWshbGT+HyCLkxloWNhTbU2QM1NTI/tDqyf0oZiMcEfYtDuUDCo528EOlt39G1rftea4bRZIw== + dependencies: + "@babel/types" "^7.16.0" + "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3" @@ -306,6 +350,20 @@ "@babel/traverse" "^7.16.0" "@babel/types" "^7.16.0" +"@babel/helper-module-transforms@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz#530ebf6ea87b500f60840578515adda2af470a29" + integrity sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ== + dependencies: + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-module-imports" "^7.16.0" + "@babel/helper-simple-access" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/helper-validator-identifier" "^7.15.7" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" + "@babel/helper-optimise-call-expression@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz#cecdb145d70c54096b1564f8e9f10cd7d193b338" @@ -323,6 +381,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== +"@babel/helper-plugin-utils@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.5.tgz#afe37a45f39fce44a3d50a7958129ea5b1a5c074" + integrity sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ== + "@babel/helper-remap-async-to-generator@^7.16.0", "@babel/helper-remap-async-to-generator@^7.16.4": version "7.16.4" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.4.tgz#5d7902f61349ff6b963e07f06a389ce139fbfe6e" @@ -332,6 +395,15 @@ "@babel/helper-wrap-function" "^7.16.0" "@babel/types" "^7.16.0" +"@babel/helper-remap-async-to-generator@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.5.tgz#e706646dc4018942acb4b29f7e185bc246d65ac3" + integrity sha512-X+aAJldyxrOmN9v3FKp+Hu1NO69VWgYgDGq6YDykwRPzxs5f2N+X988CBXS7EQahDU+Vpet5QYMqLk+nsp+Qxw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-wrap-function" "^7.16.5" + "@babel/types" "^7.16.0" + "@babel/helper-replace-supers@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz#73055e8d3cf9bcba8ddb55cad93fedc860f68f17" @@ -342,6 +414,17 @@ "@babel/traverse" "^7.16.0" "@babel/types" "^7.16.0" +"@babel/helper-replace-supers@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.5.tgz#96d3988bd0ab0a2d22c88c6198c3d3234ca25326" + integrity sha512-ao3seGVa/FZCMCCNDuBcqnBFSbdr8N2EW35mzojx3TwfIbdPmNK+JV6+2d5bR0Z71W5ocLnQp9en/cTF7pBJiQ== + dependencies: + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-member-expression-to-functions" "^7.16.5" + "@babel/helper-optimise-call-expression" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" + "@babel/helper-simple-access@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz#21d6a27620e383e37534cf6c10bba019a6f90517" @@ -383,7 +466,17 @@ "@babel/traverse" "^7.16.0" "@babel/types" "^7.16.0" -"@babel/helpers@^7.12.5", "@babel/helpers@^7.16.0": +"@babel/helper-wrap-function@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.5.tgz#0158fca6f6d0889c3fee8a6ed6e5e07b9b54e41f" + integrity sha512-2J2pmLBqUqVdJw78U0KPNdeE2qeuIyKoG4mKV7wAq3mc4jJG282UgjZw4ZYDnqiWQuS3Y3IYdF/AQ6CpyBV3VA== + dependencies: + "@babel/helper-function-name" "^7.16.0" + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" + +"@babel/helpers@^7.12.5": version "7.16.3" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.3.tgz#27fc64f40b996e7074dc73128c3e5c3e7f55c43c" integrity sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w== @@ -392,6 +485,15 @@ "@babel/traverse" "^7.16.3" "@babel/types" "^7.16.0" +"@babel/helpers@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.5.tgz#29a052d4b827846dd76ece16f565b9634c554ebd" + integrity sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw== + dependencies: + "@babel/template" "^7.16.0" + "@babel/traverse" "^7.16.5" + "@babel/types" "^7.16.0" + "@babel/highlight@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" @@ -401,11 +503,16 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.12.16", "@babel/parser@^7.12.7", "@babel/parser@^7.16.0", "@babel/parser@^7.16.3": +"@babel/parser@^7.12.7", "@babel/parser@^7.16.0", "@babel/parser@^7.16.3": version "7.16.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.4.tgz#d5f92f57cf2c74ffe9b37981c0e72fee7311372e" integrity sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng== +"@babel/parser@^7.16.4", "@babel/parser@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.5.tgz#beb3af702e54d24796341ab9420fb329131ad658" + integrity sha512-+Ce7T5iPNWzfu9C1aB5tN3Lyafs5xb3Ic7vBWyZL2KXT3QSdD1dD3CvgOzPmQKoNNRt6uauc0XwNJTQtXC2/Mw== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.2": version "7.16.2" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz#2977fca9b212db153c195674e57cfab807733183" @@ -431,6 +538,15 @@ "@babel/helper-remap-async-to-generator" "^7.16.4" "@babel/plugin-syntax-async-generators" "^7.8.4" +"@babel/plugin-proposal-async-generator-functions@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.5.tgz#fd3bd7e0d98404a3d4cbca15a72d533f8c9a2f67" + integrity sha512-C/FX+3HNLV6sz7AqbTQqEo1L9/kfrKjxcVtgyBCmvIgOjvuBVUWooDoi7trsLxOzCEo5FccjRvKHkfDsJFZlfA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-remap-async-to-generator" "^7.16.5" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-proposal-class-properties@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.0.tgz#c029618267ddebc7280fa286e0f8ca2a278a2d1a" @@ -439,6 +555,14 @@ "@babel/helper-create-class-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-proposal-class-properties@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.5.tgz#3269f44b89122110f6339806e05d43d84106468a" + integrity sha512-pJD3HjgRv83s5dv1sTnDbZOaTjghKEz8KUn1Kbh2eAIRhGuyQ1XSeI4xVXU3UlIEVA3DAyIdxqT1eRn7Wcn55A== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-proposal-class-static-block@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.0.tgz#5296942c564d8144c83eea347d0aa8a0b89170e7" @@ -448,6 +572,15 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" +"@babel/plugin-proposal-class-static-block@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.5.tgz#df58ab015a7d3b0963aafc8f20792dcd834952a9" + integrity sha512-EEFzuLZcm/rNJ8Q5krK+FRKdVkd6FjfzT9tuSZql9sQn64K0hHA2KLJ0DqVot9/iV6+SsuadC5yI39zWnm+nmQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-proposal-dynamic-import@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.0.tgz#783eca61d50526202f9b296095453977e88659f1" @@ -456,6 +589,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" +"@babel/plugin-proposal-dynamic-import@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.5.tgz#2e0d19d5702db4dcb9bc846200ca02f2e9d60e9e" + integrity sha512-P05/SJZTTvHz79LNYTF8ff5xXge0kk5sIIWAypcWgX4BTRUgyHc8wRxJ/Hk+mU0KXldgOOslKaeqnhthcDJCJQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-export-namespace-from@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.0.tgz#9c01dee40b9d6b847b656aaf4a3976a71740f222" @@ -464,6 +605,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" +"@babel/plugin-proposal-export-namespace-from@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.5.tgz#3b4dd28378d1da2fea33e97b9f25d1c2f5bf1ac9" + integrity sha512-i+sltzEShH1vsVydvNaTRsgvq2vZsfyrd7K7vPLUU/KgS0D5yZMe6uipM0+izminnkKrEfdUnz7CxMRb6oHZWw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-proposal-json-strings@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.0.tgz#cae35a95ed1d2a7fa29c4dc41540b84a72e9ab25" @@ -472,6 +621,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-json-strings" "^7.8.3" +"@babel/plugin-proposal-json-strings@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.5.tgz#1e726930fca139caab6b084d232a9270d9d16f9c" + integrity sha512-QQJueTFa0y9E4qHANqIvMsuxM/qcLQmKttBACtPCQzGUEizsXDACGonlPiSwynHfOa3vNw0FPMVvQzbuXwh4SQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-proposal-logical-assignment-operators@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.0.tgz#a711b8ceb3ffddd3ef88d3a49e86dbd3cc7db3fd" @@ -480,6 +637,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" +"@babel/plugin-proposal-logical-assignment-operators@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.5.tgz#df1f2e4b5a0ec07abf061d2c18e53abc237d3ef5" + integrity sha512-xqibl7ISO2vjuQM+MzR3rkd0zfNWltk7n9QhaD8ghMmMceVguYrNDt7MikRyj4J4v3QehpnrU8RYLnC7z/gZLA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.0.tgz#44e1cce08fe2427482cf446a91bb451528ed0596" @@ -488,6 +653,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.5.tgz#652555bfeeeee2d2104058c6225dc6f75e2d0f07" + integrity sha512-YwMsTp/oOviSBhrjwi0vzCUycseCYwoXnLiXIL3YNjHSMBHicGTz7GjVU/IGgz4DtOEXBdCNG72pvCX22ehfqg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.0.tgz#5d418e4fbbf8b9b7d03125d3a52730433a373734" @@ -496,6 +669,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" +"@babel/plugin-proposal-numeric-separator@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.5.tgz#edcb6379b6cf4570be64c45965d8da7a2debf039" + integrity sha512-DvB9l/TcsCRvsIV9v4jxR/jVP45cslTVC0PMVHvaJhhNuhn2Y1SOhCSFlPK777qLB5wb8rVDaNoqMTyOqtY5Iw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-proposal-object-rest-spread@7.12.1": version "7.12.1" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" @@ -516,6 +697,17 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.16.0" +"@babel/plugin-proposal-object-rest-spread@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.5.tgz#f30f80dacf7bc1404bf67f99c8d9c01665e830ad" + integrity sha512-UEd6KpChoyPhCoE840KRHOlGhEZFutdPDMGj+0I56yuTTOaT51GzmnEl/0uT41fB/vD2nT+Pci2KjezyE3HmUw== + dependencies: + "@babel/compat-data" "^7.16.4" + "@babel/helper-compilation-targets" "^7.16.3" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.16.5" + "@babel/plugin-proposal-optional-catch-binding@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.0.tgz#5910085811ab4c28b00d6ebffa4ab0274d1e5f16" @@ -524,6 +716,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" +"@babel/plugin-proposal-optional-catch-binding@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.5.tgz#1a5405765cf589a11a33a1fd75b2baef7d48b74e" + integrity sha512-ihCMxY1Iljmx4bWy/PIMJGXN4NS4oUj1MKynwO07kiKms23pNvIn1DMB92DNB2R0EA882sw0VXIelYGdtF7xEQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.0.tgz#56dbc3970825683608e9efb55ea82c2a2d6c8dc0" @@ -533,6 +733,15 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" +"@babel/plugin-proposal-optional-chaining@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.5.tgz#a5fa61056194d5059366c0009cb9a9e66ed75c1f" + integrity sha512-kzdHgnaXRonttiTfKYnSVafbWngPPr2qKw9BWYBESl91W54e+9R5pP70LtWxV56g0f05f/SQrwHYkfvbwcdQ/A== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-proposal-private-methods@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.0.tgz#b4dafb9c717e4301c5776b30d080d6383c89aff6" @@ -541,6 +750,14 @@ "@babel/helper-create-class-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-proposal-private-methods@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.5.tgz#2086f7d78c1b0c712d49b5c3fbc2d1ca21a7ee12" + integrity sha512-+yFMO4BGT3sgzXo+lrq7orX5mAZt57DwUK6seqII6AcJnJOIhBJ8pzKH47/ql/d426uQ7YhN8DpUFirQzqYSUA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-proposal-private-property-in-object@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.0.tgz#69e935b2c5c79d2488112d886f0c4e2790fee76f" @@ -551,6 +768,16 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" +"@babel/plugin-proposal-private-property-in-object@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.5.tgz#a42d4b56005db3d405b12841309dbca647e7a21b" + integrity sha512-+YGh5Wbw0NH3y/E5YMu6ci5qTDmAEVNoZ3I54aB6nVEOZ5BQ7QJlwKq5pYVucQilMByGn/bvX0af+uNaPRCabA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-create-class-features-plugin" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-proposal-unicode-property-regex@^7.16.0", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.0.tgz#890482dfc5ea378e42e19a71e709728cabf18612" @@ -559,6 +786,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-proposal-unicode-property-regex@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.5.tgz#35fe753afa7c572f322bd068ff3377bde0f37080" + integrity sha512-s5sKtlKQyFSatt781HQwv1hoM5BQ9qRH30r+dK56OLDsHmV74mzwJNX7R1yMuE7VZKG5O6q/gmOGSAO6ikTudg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -608,12 +843,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-jsx@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.0.tgz#f9624394317365a9a88c82358d3f8471154698f1" - integrity sha512-8zv2+xiPHwly31RK4RmnEYY5zziuF3O7W2kIDW+07ewWDh6Oi0dRq8kwvulRkFgt6DB97RlKs5c1y068iPlCUg== +"@babel/plugin-syntax-jsx@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.5.tgz#bf255d252f78bc8b77a17cadc37d1aa5b8ed4394" + integrity sha512-42OGssv9NPk4QHKVgIHlzeLgPOW5rGgfV5jzG90AhcXXIv6hu/eqj63w4VgvRxdvZY3AlYeDgPiSJ3BqAd1Y6Q== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" @@ -685,6 +920,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-arrow-functions@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.5.tgz#04c18944dd55397b521d9d7511e791acea7acf2d" + integrity sha512-8bTHiiZyMOyfZFULjsCnYOWG059FVMes0iljEHSfARhNgFfpsqE92OrCffv3veSw9rwMkYcFe9bj0ZoXU2IGtQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-async-to-generator@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.0.tgz#df12637f9630ddfa0ef9d7a11bc414d629d38604" @@ -694,6 +936,15 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/helper-remap-async-to-generator" "^7.16.0" +"@babel/plugin-transform-async-to-generator@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.5.tgz#89c9b501e65bb14c4579a6ce9563f859de9b34e4" + integrity sha512-TMXgfioJnkXU+XRoj7P2ED7rUm5jbnDWwlCuFVTpQboMfbSya5WrmubNBAMlk7KXvywpo8rd8WuYZkis1o2H8w== + dependencies: + "@babel/helper-module-imports" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-remap-async-to-generator" "^7.16.5" + "@babel/plugin-transform-block-scoped-functions@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.0.tgz#c618763233ad02847805abcac4c345ce9de7145d" @@ -701,6 +952,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-block-scoped-functions@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.5.tgz#af087494e1c387574260b7ee9b58cdb5a4e9b0b0" + integrity sha512-BxmIyKLjUGksJ99+hJyL/HIxLIGnLKtw772zYDER7UuycDZ+Xvzs98ZQw6NGgM2ss4/hlFAaGiZmMNKvValEjw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-block-scoping@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.0.tgz#bcf433fb482fe8c3d3b4e8a66b1c4a8e77d37c16" @@ -708,6 +966,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-block-scoping@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.5.tgz#b91f254fe53e210eabe4dd0c40f71c0ed253c5e7" + integrity sha512-JxjSPNZSiOtmxjX7PBRBeRJTUKTyJ607YUYeT0QJCNdsedOe+/rXITjP08eG8xUpsLfPirgzdCFN+h0w6RI+pQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-classes@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.0.tgz#54cf5ff0b2242c6573d753cd4bfc7077a8b282f5" @@ -721,6 +986,20 @@ "@babel/helper-split-export-declaration" "^7.16.0" globals "^11.1.0" +"@babel/plugin-transform-classes@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.5.tgz#6acf2ec7adb50fb2f3194dcd2909dbd056dcf216" + integrity sha512-DzJ1vYf/7TaCYy57J3SJ9rV+JEuvmlnvvyvYKFbk5u46oQbBvuB9/0w+YsVsxkOv8zVWKpDmUoj4T5ILHoXevA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-optimise-call-expression" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-replace-supers" "^7.16.5" + "@babel/helper-split-export-declaration" "^7.16.0" + globals "^11.1.0" + "@babel/plugin-transform-computed-properties@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.0.tgz#e0c385507d21e1b0b076d66bed6d5231b85110b7" @@ -728,6 +1007,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-computed-properties@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.5.tgz#2af91ebf0cceccfcc701281ada7cfba40a9b322a" + integrity sha512-n1+O7xtU5lSLraRzX88CNcpl7vtGdPakKzww74bVwpAIRgz9JVLJJpOLb0uYqcOaXVM0TL6X0RVeIJGD2CnCkg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-destructuring@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.0.tgz#ad3d7e74584ad5ea4eadb1e6642146c590dee33c" @@ -735,6 +1021,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-destructuring@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.5.tgz#89ebc87499ac4a81b897af53bb5d3eed261bd568" + integrity sha512-GuRVAsjq+c9YPK6NeTkRLWyQskDC099XkBSVO+6QzbnOnH2d/4mBVXYStaPrZD3dFRfg00I6BFJ9Atsjfs8mlg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-dotall-regex@^7.16.0", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.0.tgz#50bab00c1084b6162d0a58a818031cf57798e06f" @@ -743,6 +1036,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-dotall-regex@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.5.tgz#b40739c00b6686820653536d6d143e311de67936" + integrity sha512-iQiEMt8Q4/5aRGHpGVK2Zc7a6mx7qEAO7qehgSug3SDImnuMzgmm/wtJALXaz25zUj1PmnNHtShjFgk4PDx4nw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-duplicate-keys@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.0.tgz#8bc2e21813e3e89e5e5bf3b60aa5fc458575a176" @@ -750,6 +1051,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-duplicate-keys@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.5.tgz#2450f2742325412b746d7d005227f5e8973b512a" + integrity sha512-81tijpDg2a6I1Yhj4aWY1l3O1J4Cg/Pd7LfvuaH2VVInAkXtzibz9+zSPdUM1WvuUi128ksstAP0hM5w48vQgg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-exponentiation-operator@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.0.tgz#a180cd2881e3533cef9d3901e48dad0fbeff4be4" @@ -758,6 +1066,14 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-exponentiation-operator@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.5.tgz#36e261fa1ab643cfaf30eeab38e00ed1a76081e2" + integrity sha512-12rba2HwemQPa7BLIKCzm1pT2/RuQHtSFHdNl41cFiC6oi4tcrp7gjB07pxQvFpcADojQywSjblQth6gJyE6CA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-for-of@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.0.tgz#f7abaced155260e2461359bbc7c7248aca5e6bd2" @@ -765,6 +1081,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-for-of@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.5.tgz#9b544059c6ca11d565457c0ff1f08e13ce225261" + integrity sha512-+DpCAJFPAvViR17PIMi9x2AE34dll5wNlXO43wagAX2YcRGgEVHCNFC4azG85b4YyyFarvkc/iD5NPrz4Oneqw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-function-name@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.0.tgz#02e3699c284c6262236599f751065c5d5f1f400e" @@ -773,6 +1096,14 @@ "@babel/helper-function-name" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-function-name@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.5.tgz#6896ebb6a5538a75d6a4086a277752f655a7bd15" + integrity sha512-Fuec/KPSpVLbGo6z1RPw4EE1X+z9gZk1uQmnYy7v4xr4TO9p41v1AoUuXEtyqAI7H+xNJYSICzRqZBhDEkd3kQ== + dependencies: + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-literals@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.0.tgz#79711e670ffceb31bd298229d50f3621f7980cac" @@ -780,6 +1111,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-literals@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.5.tgz#af392b90e3edb2bd6dc316844cbfd6b9e009d320" + integrity sha512-B1j9C/IfvshnPcklsc93AVLTrNVa69iSqztylZH6qnmiAsDDOmmjEYqOm3Ts2lGSgTSywnBNiqC949VdD0/gfw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-member-expression-literals@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.0.tgz#5251b4cce01eaf8314403d21aedb269d79f5e64b" @@ -787,6 +1125,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-member-expression-literals@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.5.tgz#4bd6ecdc11932361631097b779ca5c7570146dd5" + integrity sha512-d57i3vPHWgIde/9Y8W/xSFUndhvhZN5Wu2TjRrN1MVz5KzdUihKnfDVlfP1U7mS5DNj/WHHhaE4/tTi4hIyHwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-modules-amd@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.0.tgz#09abd41e18dcf4fd479c598c1cef7bd39eb1337e" @@ -796,6 +1141,15 @@ "@babel/helper-plugin-utils" "^7.14.5" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-amd@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.5.tgz#92c0a3e83f642cb7e75fada9ab497c12c2616527" + integrity sha512-oHI15S/hdJuSCfnwIz+4lm6wu/wBn7oJ8+QrkzPPwSFGXk8kgdI/AIKcbR/XnD1nQVMg/i6eNaXpszbGuwYDRQ== + dependencies: + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-commonjs@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.0.tgz#add58e638c8ddc4875bd9a9ecb5c594613f6c922" @@ -806,6 +1160,16 @@ "@babel/helper-simple-access" "^7.16.0" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-commonjs@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.5.tgz#4ee03b089536f076b2773196529d27c32b9d7bde" + integrity sha512-ABhUkxvoQyqhCWyb8xXtfwqNMJD7tx+irIRnUh6lmyFud7Jln1WzONXKlax1fg/ey178EXbs4bSGNd6PngO+SQ== + dependencies: + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-simple-access" "^7.16.0" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-systemjs@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.0.tgz#a92cf240afeb605f4ca16670453024425e421ea4" @@ -817,6 +1181,17 @@ "@babel/helper-validator-identifier" "^7.15.7" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-systemjs@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.5.tgz#07078ba2e3cc94fbdd06836e355c246e98ad006b" + integrity sha512-53gmLdScNN28XpjEVIm7LbWnD/b/TpbwKbLk6KV4KqC9WyU6rq1jnNmVG6UgAdQZVVGZVoik3DqHNxk4/EvrjA== + dependencies: + "@babel/helper-hoist-variables" "^7.16.0" + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-validator-identifier" "^7.15.7" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-umd@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.0.tgz#195f26c2ad6d6a391b70880effce18ce625e06a7" @@ -825,6 +1200,14 @@ "@babel/helper-module-transforms" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-modules-umd@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.5.tgz#caa9c53d636fb4e3c99fd35a4c9ba5e5cd7e002e" + integrity sha512-qTFnpxHMoenNHkS3VoWRdwrcJ3FhX567GvDA3hRZKF0Dj8Fmg0UzySZp3AP2mShl/bzcywb/UWAMQIjA1bhXvw== + dependencies: + "@babel/helper-module-transforms" "^7.16.5" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-named-capturing-groups-regex@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.0.tgz#d3db61cc5d5b97986559967cd5ea83e5c32096ca" @@ -832,6 +1215,13 @@ dependencies: "@babel/helper-create-regexp-features-plugin" "^7.16.0" +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.5.tgz#4afd8cdee377ce3568f4e8a9ee67539b69886a3c" + integrity sha512-/wqGDgvFUeKELW6ex6QB7dLVRkd5ehjw34tpXu1nhKC0sFfmaLabIswnpf8JgDyV2NeDmZiwoOb0rAmxciNfjA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.0" + "@babel/plugin-transform-new-target@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.0.tgz#af823ab576f752215a49937779a41ca65825ab35" @@ -839,6 +1229,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-new-target@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.5.tgz#759ea9d6fbbc20796056a5d89d13977626384416" + integrity sha512-ZaIrnXF08ZC8jnKR4/5g7YakGVL6go6V9ql6Jl3ecO8PQaQqFE74CuM384kezju7Z9nGCCA20BqZaR1tJ/WvHg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-object-super@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.0.tgz#fb20d5806dc6491a06296ac14ea8e8d6fedda72b" @@ -847,6 +1244,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/helper-replace-supers" "^7.16.0" +"@babel/plugin-transform-object-super@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.5.tgz#8ccd9a1bcd3e7732ff8aa1702d067d8cd70ce380" + integrity sha512-tded+yZEXuxt9Jdtkc1RraW1zMF/GalVxaVVxh41IYwirdRgyAxxxCKZ9XB7LxZqmsjfjALxupNE1MIz9KH+Zg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-replace-supers" "^7.16.5" + "@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.16.0", "@babel/plugin-transform-parameters@^7.16.3": version "7.16.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.3.tgz#fa9e4c874ee5223f891ee6fa8d737f4766d31d15" @@ -854,6 +1259,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-parameters@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.5.tgz#4fc74b18a89638bd90aeec44a11793ecbe031dde" + integrity sha512-B3O6AL5oPop1jAVg8CV+haeUte9oFuY85zu0jwnRNZZi3tVAbJriu5tag/oaO2kGaQM/7q7aGPBlTI5/sr9enA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-property-literals@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.0.tgz#a95c552189a96a00059f6776dc4e00e3690c78d1" @@ -861,45 +1273,52 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-react-constant-elements@^7.12.1": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.16.0.tgz#1483b894b8e6ef0709d260532fbd4db9fc27a0e6" - integrity sha512-OgtklS+p9t1X37eWA4XdvvbZG/3gqzX569gqmo3q4/Ui6qjfTQmOs5UTSrfdD9nVByHhX6Gbm/Pyc4KbwUXGWA== +"@babel/plugin-transform-property-literals@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.5.tgz#58f1465a7202a2bb2e6b003905212dd7a79abe3f" + integrity sha512-+IRcVW71VdF9pEH/2R/Apab4a19LVvdVsr/gEeotH00vSDVlKD+XgfSIw+cgGWsjDB/ziqGv/pGoQZBIiQVXHg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-react-display-name@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.0.tgz#9a0ad8aa8e8790883a7bd2736f66229a58125676" - integrity sha512-FJFdJAqaCpndL+pIf0aeD/qlQwT7QXOvR6Cc8JPvNhKJBi2zc/DPc4g05Y3fbD/0iWAMQFGij4+Xw+4L/BMpTg== +"@babel/plugin-transform-react-constant-elements@^7.14.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.16.5.tgz#4b01ea6b14bd4e55ca92bb2d6c28dd9957118924" + integrity sha512-fdc1s5npHMZ9A+w9bYbrZu4499WyYPVaTTsRO8bU0GJcMuK4ejIX4lyjnpvi+YGLK/EhFQxWszqylO0vaMciFw== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-react-jsx-development@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.0.tgz#1cb52874678d23ab11d0d16488d54730807303ef" - integrity sha512-qq65iSqBRq0Hr3wq57YG2AmW0H6wgTnIzpffTphrUWUgLCOK+zf1f7G0vuOiXrp7dU1qq+fQBoqZ3wCDAkhFzw== +"@babel/plugin-transform-react-display-name@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.5.tgz#d5e910327d7931fb9f8f9b6c6999473ceae5a286" + integrity sha512-dHYCOnzSsXFz8UcdNQIHGvg94qPL/teF7CCiCEMRxmA1G2p5Mq4JnKVowCDxYfiQ9D7RstaAp9kwaSI+sXbnhw== dependencies: - "@babel/plugin-transform-react-jsx" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" -"@babel/plugin-transform-react-jsx@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.0.tgz#55b797d4960c3de04e07ad1c0476e2bc6a4889f1" - integrity sha512-rqDgIbukZ44pqq7NIRPGPGNklshPkvlmvqjdx3OZcGPk4zGIenYkxDTvl3LsSL8gqcc3ZzGmXPE6hR/u/voNOw== +"@babel/plugin-transform-react-jsx-development@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.5.tgz#87da9204c275ffb57f45d192a1120cf104bc1e86" + integrity sha512-uQSLacMZSGLCxOw20dzo1dmLlKkd+DsayoV54q3MHXhbqgPzoiGerZQgNPl/Ro8/OcXV2ugfnkx+rxdS0sN5Uw== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.16.5" + +"@babel/plugin-transform-react-jsx@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.5.tgz#5298aedc5f81e02b1cb702e597e8d6a346675765" + integrity sha512-+arLIz1d7kmwX0fKxTxbnoeG85ONSnLpvdODa4P3pc1sS7CV1hfmtYWufkW/oYsPnkDrEeQFxhUWcFnrXW7jQQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.0" "@babel/helper-module-imports" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-jsx" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-syntax-jsx" "^7.16.5" "@babel/types" "^7.16.0" -"@babel/plugin-transform-react-pure-annotations@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.0.tgz#23db6ddf558d8abde41b8ad9d59f48ad5532ccab" - integrity sha512-NC/Bj2MG+t8Ef5Pdpo34Ay74X4Rt804h5y81PwOpfPtmAK3i6CizmQqwyBQzIepz1Yt8wNr2Z2L7Lu3qBMfZMA== +"@babel/plugin-transform-react-pure-annotations@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.5.tgz#6535d0fe67c7a3a26c5105f92c8cbcbe844cd94b" + integrity sha512-0nYU30hCxnCVCbRjSy9ahlhWZ2Sn6khbY4FqR91W+2RbSqkWEbVu2gXh45EqNy4Bq7sRU+H4i0/6YKwOSzh16A== dependencies: "@babel/helper-annotate-as-pure" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/plugin-transform-regenerator@^7.16.0": version "7.16.0" @@ -908,6 +1327,13 @@ dependencies: regenerator-transform "^0.14.2" +"@babel/plugin-transform-regenerator@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.5.tgz#704cc6d8dd3dd4758267621ab7b36375238cef13" + integrity sha512-2z+it2eVWU8TtQQRauvGUqZwLy4+7rTfo6wO4npr+fvvN1SW30ZF3O/ZRCNmTuu4F5MIP8OJhXAhRV5QMJOuYg== + dependencies: + regenerator-transform "^0.14.2" + "@babel/plugin-transform-reserved-words@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.0.tgz#fff4b9dcb19e12619394bda172d14f2d04c0379c" @@ -915,13 +1341,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-runtime@^7.15.0": - version "7.16.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.4.tgz#f9ba3c7034d429c581e1bd41b4952f3db3c2c7e8" - integrity sha512-pru6+yHANMTukMtEZGC4fs7XPwg35v8sj5CIEmE+gEkFljFiVJxEWxx/7ZDkTK+iZRYo1bFXBtfIN95+K3cJ5A== +"@babel/plugin-transform-reserved-words@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.5.tgz#db95e98799675e193dc2b47d3e72a7c0651d0c30" + integrity sha512-aIB16u8lNcf7drkhXJRoggOxSTUAuihTSTfAcpynowGJOZiGf+Yvi7RuTwFzVYSYPmWyARsPqUGoZWWWxLiknw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-runtime@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.16.5.tgz#0cc3f01d69f299d5a42cd9ec43b92ea7a777b8db" + integrity sha512-gxpfS8XQWDbQ8oP5NcmpXxtEgCJkbO+W9VhZlOhr0xPyVaRjAQPOv7ZDj9fg0d5s9+NiVvMCE6gbkEkcsxwGRw== dependencies: "@babel/helper-module-imports" "^7.16.0" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" babel-plugin-polyfill-corejs2 "^0.3.0" babel-plugin-polyfill-corejs3 "^0.4.0" babel-plugin-polyfill-regenerator "^0.3.0" @@ -934,6 +1367,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-shorthand-properties@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.5.tgz#ccb60b1a23b799f5b9a14d97c5bc81025ffd96d7" + integrity sha512-ZbuWVcY+MAXJuuW7qDoCwoxDUNClfZxoo7/4swVbOW1s/qYLOMHlm9YRWMsxMFuLs44eXsv4op1vAaBaBaDMVg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-spread@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.0.tgz#d21ca099bbd53ab307a8621e019a7bd0f40cdcfb" @@ -942,6 +1382,14 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" +"@babel/plugin-transform-spread@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.5.tgz#912b06cff482c233025d3e69cf56d3e8fa166c29" + integrity sha512-5d6l/cnG7Lw4tGHEoga4xSkYp1euP7LAtrah1h1PgJ3JY7yNsjybsxQAnVK4JbtReZ/8z6ASVmd3QhYYKLaKZw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-transform-sticky-regex@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.0.tgz#c35ea31a02d86be485f6aa510184b677a91738fd" @@ -949,6 +1397,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-sticky-regex@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.5.tgz#593579bb2b5a8adfbe02cb43823275d9098f75f9" + integrity sha512-usYsuO1ID2LXxzuUxifgWtJemP7wL2uZtyrTVM4PKqsmJycdS4U4mGovL5xXkfUheds10Dd2PjoQLXw6zCsCbg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-template-literals@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.0.tgz#a8eced3a8e7b8e2d40ec4ec4548a45912630d302" @@ -956,6 +1411,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-template-literals@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.5.tgz#343651385fd9923f5aa2275ca352c5d9183e1773" + integrity sha512-gnyKy9RyFhkovex4BjKWL3BVYzUDG6zC0gba7VMLbQoDuqMfJ1SDXs8k/XK41Mmt1Hyp4qNAvGFb9hKzdCqBRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-typeof-symbol@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.0.tgz#8b19a244c6f8c9d668dca6a6f754ad6ead1128f2" @@ -963,7 +1425,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-typescript@^7.16.0": +"@babel/plugin-transform-typeof-symbol@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.5.tgz#a1d1bf2c71573fe30965d0e4cd6a3291202e20ed" + integrity sha512-ldxCkW180qbrvyCVDzAUZqB0TAeF8W/vGJoRcaf75awm6By+PxfJKvuqVAnq8N9wz5Xa6mSpM19OfVKKVmGHSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/plugin-transform-typescript@^7.16.1": version "7.16.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz#cc0670b2822b0338355bc1b3d2246a42b8166409" integrity sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg== @@ -979,6 +1448,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-transform-unicode-escapes@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.5.tgz#80507c225af49b4f4ee647e2a0ce53d2eeff9e85" + integrity sha512-shiCBHTIIChGLdyojsKQjoAyB8MBwat25lKM7MJjbe1hE0bgIppD+LX9afr41lLHOhqceqeWl4FkLp+Bgn9o1Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/plugin-transform-unicode-regex@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.0.tgz#293b80950177c8c85aede87cef280259fb995402" @@ -987,7 +1463,15 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.0" "@babel/helper-plugin-utils" "^7.14.5" -"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.15.6": +"@babel/plugin-transform-unicode-regex@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.5.tgz#ac84d6a1def947d71ffb832426aa53b83d7ed49e" + integrity sha512-GTJ4IW012tiPEMMubd7sD07iU9O/LOo8Q/oU4xNhcaq0Xn8+6TcUQaHtC8YxySo1T+ErQ8RaWogIEeFhKGNPzw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.0" + "@babel/helper-plugin-utils" "^7.16.5" + +"@babel/preset-env@^7.15.6": version "7.16.4" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.4.tgz#4f6ec33b2a3fe72d6bfdcdf3859500232563a2e3" integrity sha512-v0QtNd81v/xKj4gNKeuAerQ/azeNn/G1B1qMLeXOcV8+4TWlD2j3NV1u8q29SDFBXx/NBq5kyEAO+0mpRgacjA== @@ -1067,6 +1551,86 @@ core-js-compat "^3.19.1" semver "^6.3.0" +"@babel/preset-env@^7.16.4": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.5.tgz#2e94d922f4a890979af04ffeb6a6b4e44ba90847" + integrity sha512-MiJJW5pwsktG61NDxpZ4oJ1CKxM1ncam9bzRtx9g40/WkLRkxFP6mhpkYV0/DxcciqoiHicx291+eUQrXb/SfQ== + dependencies: + "@babel/compat-data" "^7.16.4" + "@babel/helper-compilation-targets" "^7.16.3" + "@babel/helper-plugin-utils" "^7.16.5" + "@babel/helper-validator-option" "^7.14.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.2" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-async-generator-functions" "^7.16.5" + "@babel/plugin-proposal-class-properties" "^7.16.5" + "@babel/plugin-proposal-class-static-block" "^7.16.5" + "@babel/plugin-proposal-dynamic-import" "^7.16.5" + "@babel/plugin-proposal-export-namespace-from" "^7.16.5" + "@babel/plugin-proposal-json-strings" "^7.16.5" + "@babel/plugin-proposal-logical-assignment-operators" "^7.16.5" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.5" + "@babel/plugin-proposal-numeric-separator" "^7.16.5" + "@babel/plugin-proposal-object-rest-spread" "^7.16.5" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.5" + "@babel/plugin-proposal-optional-chaining" "^7.16.5" + "@babel/plugin-proposal-private-methods" "^7.16.5" + "@babel/plugin-proposal-private-property-in-object" "^7.16.5" + "@babel/plugin-proposal-unicode-property-regex" "^7.16.5" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.16.5" + "@babel/plugin-transform-async-to-generator" "^7.16.5" + "@babel/plugin-transform-block-scoped-functions" "^7.16.5" + "@babel/plugin-transform-block-scoping" "^7.16.5" + "@babel/plugin-transform-classes" "^7.16.5" + "@babel/plugin-transform-computed-properties" "^7.16.5" + "@babel/plugin-transform-destructuring" "^7.16.5" + "@babel/plugin-transform-dotall-regex" "^7.16.5" + "@babel/plugin-transform-duplicate-keys" "^7.16.5" + "@babel/plugin-transform-exponentiation-operator" "^7.16.5" + "@babel/plugin-transform-for-of" "^7.16.5" + "@babel/plugin-transform-function-name" "^7.16.5" + "@babel/plugin-transform-literals" "^7.16.5" + "@babel/plugin-transform-member-expression-literals" "^7.16.5" + "@babel/plugin-transform-modules-amd" "^7.16.5" + "@babel/plugin-transform-modules-commonjs" "^7.16.5" + "@babel/plugin-transform-modules-systemjs" "^7.16.5" + "@babel/plugin-transform-modules-umd" "^7.16.5" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.5" + "@babel/plugin-transform-new-target" "^7.16.5" + "@babel/plugin-transform-object-super" "^7.16.5" + "@babel/plugin-transform-parameters" "^7.16.5" + "@babel/plugin-transform-property-literals" "^7.16.5" + "@babel/plugin-transform-regenerator" "^7.16.5" + "@babel/plugin-transform-reserved-words" "^7.16.5" + "@babel/plugin-transform-shorthand-properties" "^7.16.5" + "@babel/plugin-transform-spread" "^7.16.5" + "@babel/plugin-transform-sticky-regex" "^7.16.5" + "@babel/plugin-transform-template-literals" "^7.16.5" + "@babel/plugin-transform-typeof-symbol" "^7.16.5" + "@babel/plugin-transform-unicode-escapes" "^7.16.5" + "@babel/plugin-transform-unicode-regex" "^7.16.5" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.16.0" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.19.1" + semver "^6.3.0" + "@babel/preset-modules@^0.1.5": version "0.1.5" resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" @@ -1078,42 +1642,49 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.12.13", "@babel/preset-react@^7.12.5": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.0.tgz#f71d3e8dff5218478011df037fad52660ee6d82a" - integrity sha512-d31IFW2bLRB28uL1WoElyro8RH5l6531XfxMtCeCmp6RVAF1uTfxxUA0LH1tXl+psZdwfmIbwoG4U5VwgbhtLw== +"@babel/preset-react@^7.14.5", "@babel/preset-react@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.5.tgz#09df3b7a6522cb3e6682dc89b4dfebb97d22031b" + integrity sha512-3kzUOQeaxY/2vhPDS7CX/KGEGu/1bOYGvdRDJ2U5yjEz5o5jmIeTPLoiQBPGjfhPascLuW5OlMiPzwOOuB6txg== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-transform-react-display-name" "^7.16.0" - "@babel/plugin-transform-react-jsx" "^7.16.0" - "@babel/plugin-transform-react-jsx-development" "^7.16.0" - "@babel/plugin-transform-react-pure-annotations" "^7.16.0" + "@babel/plugin-transform-react-display-name" "^7.16.5" + "@babel/plugin-transform-react-jsx" "^7.16.5" + "@babel/plugin-transform-react-jsx-development" "^7.16.5" + "@babel/plugin-transform-react-pure-annotations" "^7.16.5" -"@babel/preset-typescript@^7.12.16": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.0.tgz#b0b4f105b855fb3d631ec036cdc9d1ffd1fa5eac" - integrity sha512-txegdrZYgO9DlPbv+9QOVpMnKbOtezsLHWsnsRF4AjbSIsVaujrq1qg8HK0mxQpWv0jnejt0yEoW1uWpvbrDTg== +"@babel/preset-typescript@^7.15.0", "@babel/preset-typescript@^7.16.0": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.5.tgz#b86a5b0ae739ba741347d2f58c52f52e63cf1ba1" + integrity sha512-lmAWRoJ9iOSvs3DqOndQpj8XqXkzaiQs50VG/zESiI9D3eoZhGriU675xNCr0UwvsuXrhMAGvyk1w+EVWF3u8Q== dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.5" "@babel/helper-validator-option" "^7.14.5" - "@babel/plugin-transform-typescript" "^7.16.0" + "@babel/plugin-transform-typescript" "^7.16.1" -"@babel/runtime-corejs3@^7.15.4": - version "7.16.3" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.16.3.tgz#1e25de4fa994c57c18e5fdda6cc810dac70f5590" - integrity sha512-IAdDC7T0+wEB4y2gbIL0uOXEYpiZEeuFUTVbdGq+UwCcF35T/tS8KrmMomEwEc5wBbyfH3PJVpTSUqrhPDXFcQ== +"@babel/runtime-corejs3@^7.16.3": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.16.5.tgz#9057d879720c136193f0440bc400088212a74894" + integrity sha512-F1pMwvTiUNSAM8mc45kccMQxj31x3y3P+tA/X8hKNWp3/hUsxdGxZ3D3H8JIkxtfA8qGkaBTKvcmvStaYseAFw== dependencies: core-js-pure "^3.19.0" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": version "7.16.3" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.3.tgz#b86f0db02a04187a3c17caa77de69840165d42d5" integrity sha512-WBwekcqacdY2e9AF/Q7WLFUWmdJGJTkbjqTjoMDgXkVZ3ZRUvOPsLb5KdwISoQVsbP+DQzVZW4Zhci0DvpbNTQ== dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.16.3": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.5.tgz#7f3e34bf8bdbbadf03fbb7b1ea0d929569c9487a" + integrity sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/template@^7.12.7", "@babel/template@^7.16.0": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6" @@ -1123,7 +1694,7 @@ "@babel/parser" "^7.16.0" "@babel/types" "^7.16.0" -"@babel/traverse@^7.12.13", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.0", "@babel/traverse@^7.16.3": +"@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.0", "@babel/traverse@^7.16.3": version "7.16.3" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.3.tgz#f63e8a938cc1b780f66d9ed3c54f532ca2d14787" integrity sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag== @@ -1138,7 +1709,23 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.16.0", "@babel/types@^7.4.4": +"@babel/traverse@^7.16.5": + version "7.16.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.5.tgz#d7d400a8229c714a59b87624fc67b0f1fbd4b2b3" + integrity sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ== + dependencies: + "@babel/code-frame" "^7.16.0" + "@babel/generator" "^7.16.5" + "@babel/helper-environment-visitor" "^7.16.5" + "@babel/helper-function-name" "^7.16.0" + "@babel/helper-hoist-variables" "^7.16.0" + "@babel/helper-split-export-declaration" "^7.16.0" + "@babel/parser" "^7.16.5" + "@babel/types" "^7.16.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.12.7", "@babel/types@^7.15.6", "@babel/types@^7.16.0", "@babel/types@^7.4.4": version "7.16.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba" integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg== @@ -1161,29 +1748,29 @@ "@docsearch/css" "3.0.0-alpha.41" algoliasearch "^4.0.0" -"@docusaurus/core@2.0.0-beta.9", "@docusaurus/core@^2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.9.tgz#59b57c5e60fe83ef9e3c6aa7000d470eb0c52656" - integrity sha512-Bf9c6+yftZfAJk2h4HyaDvzBp5TLhqYtfnfWKKNi0Gdw9vRLXhi7IaiGaLWIuNAIJLTi++Ql0BAn+C0OO8EsWA== +"@docusaurus/core@2.0.0-beta.13", "@docusaurus/core@^2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.13.tgz#3179303e043bf6bd5da6b0141574665f5e66ea98" + integrity sha512-iSU20aIVUDO8m+9koP/sHR1O/6Wvcr/WUMyYwJ47OPq4OkM4L2+opN9mb7UI5ZFXotXZAyMBe1Q6h83FC5xzvA== dependencies: - "@babel/core" "^7.12.16" - "@babel/generator" "^7.12.15" + "@babel/core" "^7.16.0" + "@babel/generator" "^7.16.0" "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.15.0" - "@babel/preset-env" "^7.15.6" - "@babel/preset-react" "^7.12.13" - "@babel/preset-typescript" "^7.12.16" - "@babel/runtime" "^7.15.4" - "@babel/runtime-corejs3" "^7.15.4" - "@babel/traverse" "^7.12.13" - "@docusaurus/cssnano-preset" "2.0.0-beta.9" + "@babel/plugin-transform-runtime" "^7.16.0" + "@babel/preset-env" "^7.16.4" + "@babel/preset-react" "^7.16.0" + "@babel/preset-typescript" "^7.16.0" + "@babel/runtime" "^7.16.3" + "@babel/runtime-corejs3" "^7.16.3" + "@babel/traverse" "^7.16.3" + "@docusaurus/cssnano-preset" "2.0.0-beta.13" + "@docusaurus/mdx-loader" "2.0.0-beta.13" "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/types" "2.0.0-beta.9" - "@docusaurus/utils" "2.0.0-beta.9" - "@docusaurus/utils-common" "2.0.0-beta.9" - "@docusaurus/utils-validation" "2.0.0-beta.9" + "@docusaurus/utils" "2.0.0-beta.13" + "@docusaurus/utils-common" "2.0.0-beta.13" + "@docusaurus/utils-validation" "2.0.0-beta.13" "@slorber/static-site-generator-webpack-plugin" "^4.0.0" - "@svgr/webpack" "^5.5.0" + "@svgr/webpack" "^6.0.0" autoprefixer "^10.3.5" babel-loader "^8.2.2" babel-plugin-dynamic-import-node "2.3.0" @@ -1203,7 +1790,6 @@ eta "^1.12.3" file-loader "^6.2.0" fs-extra "^10.0.0" - github-slugger "^1.4.0" globby "^11.0.2" html-minifier-terser "^6.0.2" html-tags "^3.1.0" @@ -1231,7 +1817,6 @@ semver "^7.3.4" serve-handler "^6.1.3" shelljs "^0.8.4" - std-env "^2.2.1" strip-ansi "^6.0.0" terser-webpack-plugin "^5.2.4" tslib "^2.3.1" @@ -1240,73 +1825,72 @@ wait-on "^6.0.0" webpack "^5.61.0" webpack-bundle-analyzer "^4.4.2" - webpack-dev-server "^4.4.0" + webpack-dev-server "^4.5.0" webpack-merge "^5.8.0" webpackbar "^5.0.0-3" -"@docusaurus/cssnano-preset@2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.9.tgz#4ad9079c68b79744c08be6e48e51d2c12907f71f" - integrity sha512-oIdoiZ/i4LXRxmuLN2ZmvGpMqtwba+ck9TlaQDWC7wvHx+EA9mvvcewKWgc7e4dxPA00+777cQvrDctAreAqLw== +"@docusaurus/cssnano-preset@2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.13.tgz#14d20360ca71be62b045b56607632b5221b69963" + integrity sha512-5e6tOtRJ4tFO94TtVNluseOJ7WX0sqCzS2nCUo02DUR4h/xlF/YMLpdt6FKd450L5l2uIrAc08QzX4Nv4y85Kg== dependencies: cssnano-preset-advanced "^5.1.4" postcss "^8.3.7" postcss-sort-media-queries "^4.1.0" -"@docusaurus/lqip-loader@2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/lqip-loader/-/lqip-loader-2.0.0-beta.9.tgz#8b3629e2a1f28c2171d416d2a4f261432bb7778e" - integrity sha512-oG/KWjqX+roJrwT9o32RXjyOS+L1I2HXpjHRlyNvAtw2VK2S1xK8o4sqGXNXxOIvAmRBRcvWBQ+BF45EMON8dg== +"@docusaurus/lqip-loader@2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/lqip-loader/-/lqip-loader-2.0.0-beta.13.tgz#e36b902e1d53254d631cdfa60e50de91d8beb119" + integrity sha512-IMai2BwYLdQPStfuA1zqxLxy7yMAeGU1K7C+DkPiEGYnzHxzywAZ/oxln72XRjWBYSw69Oh7AbPriSfbYkFXEQ== dependencies: file-loader "^6.2.0" lodash "^4.17.20" node-vibrant "^3.1.5" sharp "^0.29.1" -"@docusaurus/mdx-loader@2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.9.tgz#e87a1ff22fdabcb6bea59beae8b2d999dfb6eb81" - integrity sha512-qb+/Ew69kaAIiot+1lJ13ozsyCY+7/VryzopDTgr60BDCsLUvuDzjNKreBqo1xdC4JxYD/hJMV7UAHkZ8rWB8Q== +"@docusaurus/mdx-loader@2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.13.tgz#1f5a0e8487355f867d23627015c8a679a14463d0" + integrity sha512-z7Sa3VTybhKhlFyBMap6tyIb5e+FVa28jYXeq6aLe7Xr16YCK9ZqjlM8G6/Gvx68L8ILBlNsCZM2GinIh8t7/Q== dependencies: - "@babel/parser" "^7.12.16" - "@babel/traverse" "^7.12.13" - "@docusaurus/core" "2.0.0-beta.9" - "@docusaurus/utils" "2.0.0-beta.9" + "@babel/parser" "^7.16.4" + "@babel/traverse" "^7.16.3" + "@docusaurus/utils" "2.0.0-beta.13" "@mdx-js/mdx" "^1.6.21" "@mdx-js/react" "^1.6.21" chalk "^4.1.2" escape-html "^1.0.3" file-loader "^6.2.0" fs-extra "^10.0.0" - github-slugger "^1.4.0" gray-matter "^4.0.3" mdast-util-to-string "^2.0.0" remark-emoji "^2.1.0" stringify-object "^3.3.0" + tslib "^2.3.1" unist-util-visit "^2.0.2" url-loader "^4.1.1" webpack "^5.61.0" -"@docusaurus/module-type-aliases@^2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.9.tgz#71b9b240b033fcdc6e44bac3d9a83f56a429599b" - integrity sha512-H8keGRVrGSymmzI1r/9lHx62JVm/9eedja2eJr/eQPkXZlJjht0AEsWt/bwTVJ8qbPthG0G0FPuApJdt+8aK8Q== +"@docusaurus/module-type-aliases@^2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.13.tgz#45e811739bec9b79dba07af040e574c9cd2cd04a" + integrity sha512-yYHWajhjx0IgMJkbPtoXQzC58em6emGFyl5w5b6OuFxG4qXHZQJp7dRaPQxUMCBvOcHrI9lIw9RYJssIwOcYAg== dependencies: + "@docusaurus/types" "2.0.0-beta.13" "@types/react" "*" "@types/react-helmet" "*" "@types/react-router-config" "*" "@types/react-router-dom" "*" -"@docusaurus/plugin-content-blog@2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.9.tgz#d72a32013232610552cbc45509ba2ddaea653690" - integrity sha512-KZ6UmUa/P4SSX8/xnZpwSt7krnAfRg3S/ghZ7zeIzcp12iumSZBmLNi5rIIXcsFVH0IPOnIofEoWEaEIwaNerg== +"@docusaurus/plugin-content-blog@2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.13.tgz#57c9b6f71c57dd6895a11b9f541e2e7b95206828" + integrity sha512-J0SesYymavO9pjnuhC28ycSVgzv7Z1fSpq7tfkqLh3uPydq9N2eY7CbyPOysrLBta3/PveldLU+XskiNUs7hCg== dependencies: - "@docusaurus/core" "2.0.0-beta.9" - "@docusaurus/mdx-loader" "2.0.0-beta.9" - "@docusaurus/types" "2.0.0-beta.9" - "@docusaurus/utils" "2.0.0-beta.9" - "@docusaurus/utils-validation" "2.0.0-beta.9" + "@docusaurus/core" "2.0.0-beta.13" + "@docusaurus/mdx-loader" "2.0.0-beta.13" + "@docusaurus/utils" "2.0.0-beta.13" + "@docusaurus/utils-validation" "2.0.0-beta.13" chalk "^4.1.2" escape-string-regexp "^4.0.0" feed "^4.2.2" @@ -1321,20 +1905,18 @@ utility-types "^3.10.0" webpack "^5.61.0" -"@docusaurus/plugin-content-docs@2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.9.tgz#53ac2b43beb0f183c8a9b8fab6201e5e8f444a67" - integrity sha512-GC+CvqKuravPpK5fqlYJVmj9hc6nkd/c/rM2ONueFCqw2wyuH7esWL8RpMqgS0JM1qwwuRpi0Dd3R/zdOptHIQ== +"@docusaurus/plugin-content-docs@2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.13.tgz#060e344147a05574f34380462a3380b38a24fbbc" + integrity sha512-NaYxr/R+FBaONUFEcFAOfYNA5CRwceRHNFOEIRdJtkJZbWpct5vkKPIojUWUfJbXb2/nV98rPufHyOdVmvAxVA== dependencies: - "@docusaurus/core" "2.0.0-beta.9" - "@docusaurus/mdx-loader" "2.0.0-beta.9" - "@docusaurus/types" "2.0.0-beta.9" - "@docusaurus/utils" "2.0.0-beta.9" - "@docusaurus/utils-validation" "2.0.0-beta.9" + "@docusaurus/core" "2.0.0-beta.13" + "@docusaurus/mdx-loader" "2.0.0-beta.13" + "@docusaurus/utils" "2.0.0-beta.13" + "@docusaurus/utils-validation" "2.0.0-beta.13" chalk "^4.1.2" combine-promises "^1.1.0" escape-string-regexp "^4.0.0" - execa "^5.0.0" fs-extra "^10.0.0" globby "^11.0.2" import-fresh "^3.2.2" @@ -1347,92 +1929,89 @@ utility-types "^3.10.0" webpack "^5.61.0" -"@docusaurus/plugin-content-pages@2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.9.tgz#115309f03bae2864bb9e4cd8fae646ea2e1f31dc" - integrity sha512-27nFHhPpZEWra6izyWgY+EkBspr3OAUUHojRXzMUKplYLZ5gIciM224PXbwLyECjpn51eaf8/2Ay+/H9BdTCBw== +"@docusaurus/plugin-content-pages@2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.13.tgz#8a892a6d8064d7f007d684cf4e3a8d5614060027" + integrity sha512-gUG69seyivxM0/vQ0SDeynEx9un6IMauMD8J8CWHikTF/axnV27aadjEmmBP8cEvpvXfy3k1zAcGV+BcMUGKbw== dependencies: - "@docusaurus/core" "2.0.0-beta.9" - "@docusaurus/mdx-loader" "2.0.0-beta.9" - "@docusaurus/types" "2.0.0-beta.9" - "@docusaurus/utils" "2.0.0-beta.9" - "@docusaurus/utils-validation" "2.0.0-beta.9" + "@docusaurus/core" "2.0.0-beta.13" + "@docusaurus/mdx-loader" "2.0.0-beta.13" + "@docusaurus/utils" "2.0.0-beta.13" + "@docusaurus/utils-validation" "2.0.0-beta.13" globby "^11.0.2" - lodash "^4.17.20" remark-admonitions "^1.2.1" tslib "^2.3.1" webpack "^5.61.0" -"@docusaurus/plugin-debug@2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.9.tgz#97920e6ba333f99537bd72ae97a8999beeb39a3b" - integrity sha512-uVnLfNE7YBMCWVcfoy6NgAxbqfG3bXfrLozM2RMafPmsCitaw+wrTdnba/irM364wPFFursF9lDrNLwSrYiRbw== +"@docusaurus/plugin-debug@2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.13.tgz#3313e34b46aaee3ca15c1cad6cdb316faa3a1cdf" + integrity sha512-tiuKE510Md0RR2+Pkh+YSj41mZmPv/l0c6Mi71mhHiHG5YABjVxbJxoG06WRm/qDkwCwkFcdKRUy/Cu+n9SGDQ== dependencies: - "@docusaurus/core" "2.0.0-beta.9" - "@docusaurus/types" "2.0.0-beta.9" - "@docusaurus/utils" "2.0.0-beta.9" + "@docusaurus/core" "2.0.0-beta.13" + "@docusaurus/utils" "2.0.0-beta.13" fs-extra "^10.0.0" react-json-view "^1.21.3" tslib "^2.3.1" -"@docusaurus/plugin-google-analytics@2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.9.tgz#5584d20b2e64cc3f84978d42cb0edeeabaf49123" - integrity sha512-fYnunrefFko2jF/M973FONZjn9QHzNnt7+uMokR4frK/BX/zEyW2Yw6vh7dC0oo+ml5625Pv5OfwwlOJ9DRmHw== +"@docusaurus/plugin-google-analytics@2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.13.tgz#4f1eea13c32fa3ccc84b865eaafe988f36d4d95b" + integrity sha512-I37v2aWq43EXVScSOrYqP6PtHNVWar9OJ4Pbgwx1GNAy2VTyAQMoD8cLOCm6LVsEPxzIj+JsvGHrMlzaXZ3WIQ== dependencies: - "@docusaurus/core" "2.0.0-beta.9" + "@docusaurus/core" "2.0.0-beta.13" + "@docusaurus/utils-validation" "2.0.0-beta.13" -"@docusaurus/plugin-google-gtag@2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.9.tgz#70de97bb5a25bc10969941ec257d694db0abed79" - integrity sha512-AlVhbjN0OEiM8r8BncdiP82B9I7Dw3fN4cj2pPLtcOmvcRPQM2BfdzxbXPBUHgyT50Rd6hxS+R2Fl/s2RpUAHA== +"@docusaurus/plugin-google-gtag@2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.13.tgz#9d0c477cb3e85ece99f1846d70c0e21d32cb107e" + integrity sha512-+V4Fp0KaIi50Mf7G0qj1g4xynF6pqDZjhvzZrQG351As9JZanLUIC9ggAleXLQih+ZST1qEEgjogVSlikNlcCQ== dependencies: - "@docusaurus/core" "2.0.0-beta.9" + "@docusaurus/core" "2.0.0-beta.13" + "@docusaurus/utils-validation" "2.0.0-beta.13" -"@docusaurus/plugin-ideal-image@^2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-ideal-image/-/plugin-ideal-image-2.0.0-beta.9.tgz#c0de30c611635798bfce1cabfce40eb5825d7e3d" - integrity sha512-VnfjBavOSwiP/1/RaDtr1o3ddu2dp6xncx75ptXSvX3lHtvGV8o6jafjp7lmsWAtot6UK9LXxGKbr1oiOj/ILA== +"@docusaurus/plugin-ideal-image@^2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-ideal-image/-/plugin-ideal-image-2.0.0-beta.13.tgz#0ced3a54fade0c6878bfb4a971c466b27e17ad57" + integrity sha512-8CVBnsCV3hbNQjuusx9i0TfZkY7NZbofWh9etCceuTzY31qkrsz3i9buGsugJydGA+LXcqJ6lXz0Oy1qhrOajQ== dependencies: - "@docusaurus/core" "2.0.0-beta.9" - "@docusaurus/lqip-loader" "2.0.0-beta.9" - "@docusaurus/responsive-loader" "1.4.0" - "@docusaurus/types" "2.0.0-beta.9" + "@docusaurus/core" "2.0.0-beta.13" + "@docusaurus/lqip-loader" "2.0.0-beta.13" + "@docusaurus/responsive-loader" "1.5.0" "@endiliey/react-ideal-image" "^0.0.11" react-waypoint "^10.1.0" sharp "^0.29.1" tslib "^2.3.1" webpack "^5.61.0" -"@docusaurus/plugin-sitemap@2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.9.tgz#4c944b6fc4e8fa4625a6fd985ec21d6455c31647" - integrity sha512-p6Qc1vo/yb1v767/u0E72inkGKayx77HDKsDOGrNj2IH0db0cMsskBLeKYcDfVz5+dtmFrR+lubINp7TyofkvA== +"@docusaurus/plugin-sitemap@2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.13.tgz#d2a2e0eb28286e6277f229a6c3f47ab1b05be052" + integrity sha512-SEiefgI9nDWgtQXMzaIHAQwKIsof9tYp0iU7BEqRSJqM2CX3LwGIGr1JpQOxBUJfbHu5tk1LMgJO11Pfz/fMNQ== dependencies: - "@docusaurus/core" "2.0.0-beta.9" - "@docusaurus/types" "2.0.0-beta.9" - "@docusaurus/utils" "2.0.0-beta.9" - "@docusaurus/utils-common" "2.0.0-beta.9" - "@docusaurus/utils-validation" "2.0.0-beta.9" + "@docusaurus/core" "2.0.0-beta.13" + "@docusaurus/utils" "2.0.0-beta.13" + "@docusaurus/utils-common" "2.0.0-beta.13" + "@docusaurus/utils-validation" "2.0.0-beta.13" fs-extra "^10.0.0" sitemap "^7.0.0" tslib "^2.3.1" -"@docusaurus/preset-classic@^2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.9.tgz#853e6fa376eb389a2f06c0c85f2bc823b26b3010" - integrity sha512-wm4x+jOKYaBL+7ckJwskyiITayNm3127e42kz4CtvmjjccpZu68JCfjehqkpnoPDTByBYnaeOKyga4azeAQLSA== +"@docusaurus/preset-classic@^2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.13.tgz#907badfe99e46d37ab900f148cc7169671c7fe95" + integrity sha512-LuxZc7/VO0abXVccQaSXND6mY6hA62DKadp4Gaw+IZV5vabrlBLQYaN9G/Cn5De+b1G5qbsyNS3sz6UQLWqQvA== dependencies: - "@docusaurus/core" "2.0.0-beta.9" - "@docusaurus/plugin-content-blog" "2.0.0-beta.9" - "@docusaurus/plugin-content-docs" "2.0.0-beta.9" - "@docusaurus/plugin-content-pages" "2.0.0-beta.9" - "@docusaurus/plugin-debug" "2.0.0-beta.9" - "@docusaurus/plugin-google-analytics" "2.0.0-beta.9" - "@docusaurus/plugin-google-gtag" "2.0.0-beta.9" - "@docusaurus/plugin-sitemap" "2.0.0-beta.9" - "@docusaurus/theme-classic" "2.0.0-beta.9" - "@docusaurus/theme-search-algolia" "2.0.0-beta.9" + "@docusaurus/core" "2.0.0-beta.13" + "@docusaurus/plugin-content-blog" "2.0.0-beta.13" + "@docusaurus/plugin-content-docs" "2.0.0-beta.13" + "@docusaurus/plugin-content-pages" "2.0.0-beta.13" + "@docusaurus/plugin-debug" "2.0.0-beta.13" + "@docusaurus/plugin-google-analytics" "2.0.0-beta.13" + "@docusaurus/plugin-google-gtag" "2.0.0-beta.13" + "@docusaurus/plugin-sitemap" "2.0.0-beta.13" + "@docusaurus/theme-classic" "2.0.0-beta.13" + "@docusaurus/theme-search-algolia" "2.0.0-beta.13" "@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": version "5.5.2" @@ -1442,79 +2021,82 @@ "@types/react" "*" prop-types "^15.6.2" -"@docusaurus/responsive-loader@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@docusaurus/responsive-loader/-/responsive-loader-1.4.0.tgz#dea284e15133570f5ef09be414881c65c42e43d9" - integrity sha512-qkVjSEUM4dVNmgOWkjbuRetZegOiCnzGPOzS1FPmxMrc9jCI70Rusx67EYdYPyAu47F2cvUf8PwX0o6AUzfNTQ== +"@docusaurus/responsive-loader@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@docusaurus/responsive-loader/-/responsive-loader-1.5.0.tgz#653a62e08e2c4390eee81506897a2fa10dd9d6a7" + integrity sha512-Zg7JNB4hzJCdaWjiJevrAp1Dcejef2QIF0BPfOHbT+yR0KD5043L7PLDl2+r+oU3JTbe7H5xEv1LlXDU7mjdzA== dependencies: loader-utils "^2.0.0" -"@docusaurus/theme-classic@2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.9.tgz#d4d246c295e91938bb4ae9745104e352bc5dfe94" - integrity sha512-vTijCGrkFkaqzpOu7w1AaXOBFOo6wirkNEN0+TMkx3oTu95Yj7h98rt/9Z60f6L9HVjOFQ18h3fU6cWloNG+Bg== +"@docusaurus/theme-classic@2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.13.tgz#131f04dd1812ea3534c59fdb6a970e191fabdd46" + integrity sha512-c5yc4OauJ0MxVVa872lV2eBUho4xpUaq0U151dXbpQbIs5YRc1RWitzGOSUPuTrERT/d887TuQDfofh/zTHdAQ== dependencies: - "@docusaurus/core" "2.0.0-beta.9" - "@docusaurus/plugin-content-blog" "2.0.0-beta.9" - "@docusaurus/plugin-content-docs" "2.0.0-beta.9" - "@docusaurus/plugin-content-pages" "2.0.0-beta.9" - "@docusaurus/theme-common" "2.0.0-beta.9" - "@docusaurus/types" "2.0.0-beta.9" - "@docusaurus/utils" "2.0.0-beta.9" - "@docusaurus/utils-common" "2.0.0-beta.9" - "@docusaurus/utils-validation" "2.0.0-beta.9" + "@docusaurus/plugin-content-blog" "2.0.0-beta.13" + "@docusaurus/plugin-content-docs" "2.0.0-beta.13" + "@docusaurus/plugin-content-pages" "2.0.0-beta.13" + "@docusaurus/theme-common" "2.0.0-beta.13" + "@docusaurus/theme-translations" "2.0.0-beta.13" + "@docusaurus/utils" "2.0.0-beta.13" + "@docusaurus/utils-validation" "2.0.0-beta.13" "@mdx-js/mdx" "^1.6.21" "@mdx-js/react" "^1.6.21" chalk "^4.1.2" clsx "^1.1.1" copy-text-to-clipboard "^3.0.1" - fs-extra "^10.0.0" globby "^11.0.2" - infima "0.2.0-alpha.34" + infima "0.2.0-alpha.36" lodash "^4.17.20" - parse-numeric-range "^1.3.0" postcss "^8.3.7" prism-react-renderer "^1.2.1" prismjs "^1.23.0" - prop-types "^15.7.2" react-router-dom "^5.2.0" rtlcss "^3.3.0" -"@docusaurus/theme-common@2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.9.tgz#a2bd5eb242baa38b110a191126f9054740267925" - integrity sha512-ZsFP+wH1CY6SBqkBGAdj9kHZHkV/7Y77Jw0rnEVbVU4zX2Jh6apWRCOJVaPrroDES8/9D6WWKQgQifeoJ2EeIA== +"@docusaurus/theme-common@2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.13.tgz#3b1e2374ed5b2ef7315e197dd8448d824b1853cf" + integrity sha512-lperE2dgmKmSHIRaMx34qTTwsjDsKu2WSZwbZ/faIPt5lups2OgiON154qYfFqOVwbM+IvdFQWfo4RiEaNesvQ== dependencies: - "@docusaurus/core" "2.0.0-beta.9" - "@docusaurus/plugin-content-blog" "2.0.0-beta.9" - "@docusaurus/plugin-content-docs" "2.0.0-beta.9" - "@docusaurus/plugin-content-pages" "2.0.0-beta.9" - "@docusaurus/types" "2.0.0-beta.9" + "@docusaurus/plugin-content-blog" "2.0.0-beta.13" + "@docusaurus/plugin-content-docs" "2.0.0-beta.13" + "@docusaurus/plugin-content-pages" "2.0.0-beta.13" clsx "^1.1.1" fs-extra "^10.0.0" + parse-numeric-range "^1.3.0" tslib "^2.3.1" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.9.tgz#ccece22535b91e83757c21d895817c5f577fcc36" - integrity sha512-pbpA18kqr5H7A7snmHf4dzMYV+3nsTDYMhV9f2Tms7yP9cxW7ZMHJwaEKXh1myE58Nbkv84AF734TR1UgYrziw== +"@docusaurus/theme-search-algolia@2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.13.tgz#095c8ffbe1120c2a6f564e8e0fd9418dba2df267" + integrity sha512-/+jiRQvuG85iWlOsprQd/1OGUifwN8t9WMlPA6TjAcUoycFdra73P/1RHZzMjuUd8CV0VbzaD+wLCryMdf5lIw== dependencies: "@docsearch/react" "^3.0.0-alpha.39" - "@docusaurus/core" "2.0.0-beta.9" - "@docusaurus/theme-common" "2.0.0-beta.9" - "@docusaurus/utils" "2.0.0-beta.9" - "@docusaurus/utils-validation" "2.0.0-beta.9" + "@docusaurus/core" "2.0.0-beta.13" + "@docusaurus/theme-common" "2.0.0-beta.13" + "@docusaurus/theme-translations" "2.0.0-beta.13" + "@docusaurus/utils" "2.0.0-beta.13" + "@docusaurus/utils-validation" "2.0.0-beta.13" algoliasearch "^4.10.5" algoliasearch-helper "^3.5.5" clsx "^1.1.1" eta "^1.12.3" lodash "^4.17.20" -"@docusaurus/types@2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.9.tgz#3561a0e3ce9bcb0892d02a025161bb854a189d10" - integrity sha512-7qK7PCwRImHzv9RMi5HJ7RoHKQ8r7oqZK79UucmzBXl5nyfZridBC7JQ+LG7GBqYVaIjfOHUflOOLIVn+gK2/g== +"@docusaurus/theme-translations@2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.0.0-beta.13.tgz#353ebe3d20994a6d71edf28d62aa663db5fa2e92" + integrity sha512-ZDjObLcJCoylltgbnyOr3gnkh+pOH3U7m3kJJNyVuC3yPIK97NHcQXO5FxujlwjtWL11BIGDOu+oZsmaNL7PMw== + dependencies: + fs-extra "^10.0.0" + tslib "^2.3.1" + +"@docusaurus/types@2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.13.tgz#1a837bdd13e9384bdbdb301dd0c31f9c97ea8197" + integrity sha512-4kGninMm3uEcvN/KXBAmc4nR83jPC8h7bPY2MsioSAjL8T0i2f7dUqmVQuIT3vJ69VQaY9HtWhJcTPPYeY3B/w== dependencies: commander "^5.1.0" joi "^17.4.2" @@ -1523,35 +2105,35 @@ webpack "^5.61.0" webpack-merge "^5.8.0" -"@docusaurus/utils-common@2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.9.tgz#3c61db4dd87b4644266e9c240024049cd991f338" - integrity sha512-ftVRifnVXW9eQjwOSuTzhEb9P55KSVfqEbQHgUlMm8KYXHC4NNdn4V+9sHmdJ8rDWNU+PA/+FMjGxWLVejMkxg== +"@docusaurus/utils-common@2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.13.tgz#12511a35b1fdb1c57b773ed8fb92ad7cffd4da47" + integrity sha512-jtTGqFbk0qL+338w311aYxpBScAS7MjwXbQdxkBtTV3iELApl6Vc2XXspWCWAQGr+BsRjjz+jnVei9BqUG1PnQ== dependencies: - "@docusaurus/types" "2.0.0-beta.9" tslib "^2.3.1" -"@docusaurus/utils-validation@2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.9.tgz#7a4e4ab29627b618a784e8b59fbe4b4bab736594" - integrity sha512-8XZ2wdg+HPSVqgFzhfvntPLwX0+sCypvODatXR8A3YUraZYqQU0NK7SLqD1epLpmHjT/bztSq5DydoGoFRJdIA== +"@docusaurus/utils-validation@2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.13.tgz#3ec823a9587f1163e679f7d284277a5b912ea4da" + integrity sha512-2ucoqiFKQURCmqxRN3uYwper/uEWiY0auMRMt0RnhgRZlY3460IoPMjs5ewyjWAP7huRMhNz/FMmNUheKEK06w== dependencies: - "@docusaurus/utils" "2.0.0-beta.9" + "@docusaurus/utils" "2.0.0-beta.13" chalk "^4.1.2" joi "^17.4.2" tslib "^2.3.1" -"@docusaurus/utils@2.0.0-beta.9": - version "2.0.0-beta.9" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.9.tgz#b9d2b5e2baaed94b5041288fa759438e0164c408" - integrity sha512-f5TUY72Qux0wv1tjxsvjFDjfRnsWtQjsjR5Q/gJ5V021H9lycC9YCk0cEReg3bI3+IVL2iGvQqNnH3R1G7NcRw== +"@docusaurus/utils@2.0.0-beta.13": + version "2.0.0-beta.13" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.13.tgz#aac3d7732593969cacfca29675c490b0309dc324" + integrity sha512-jvQynP//qwqwD8tvCdCH6a9QMc8XQwC6nJsU3pu6+dvU9STVrriBH4RmrQSL4orPFdJ46sBjQEH7DD3sYvv9fw== dependencies: - "@docusaurus/types" "2.0.0-beta.9" "@mdx-js/runtime" "^1.6.22" - "@types/github-slugger" "^1.3.0" + "@svgr/webpack" "^6.0.0" chalk "^4.1.2" escape-string-regexp "^4.0.0" + file-loader "^6.2.0" fs-extra "^10.0.0" + github-slugger "^1.4.0" globby "^11.0.4" gray-matter "^4.0.3" lodash "^4.17.20" @@ -1560,6 +2142,7 @@ remark-mdx-remove-imports "^1.6.22" resolve-pathname "^3.0.0" tslib "^2.3.1" + url-loader "^4.1.1" "@endiliey/react-ideal-image@^0.0.11": version "0.0.11" @@ -1747,6 +2330,23 @@ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== +"@prisma/client@^3.6.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@prisma/client/-/client-3.6.0.tgz#68a60cd4c73a369b11f72e173e86fd6789939293" + integrity sha512-ycSGY9EZGROtje0iCNsgC5Zqi/ttX2sO7BNMYaLsUMiTlf3F69ZPH+08pRo0hrDfkZzyimXYqeXJlaoYDH1w7A== + dependencies: + "@prisma/engines-version" "3.6.0-24.dc520b92b1ebb2d28dc3161f9f82e875bd35d727" + +"@prisma/engines-version@3.6.0-24.dc520b92b1ebb2d28dc3161f9f82e875bd35d727": + version "3.6.0-24.dc520b92b1ebb2d28dc3161f9f82e875bd35d727" + resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-3.6.0-24.dc520b92b1ebb2d28dc3161f9f82e875bd35d727.tgz#25aa447776849a774885866b998732b37ec4f4f5" + integrity sha512-vtoO2ys6mSfc8ONTWdcYztKN3GBU1tcKBj0aXObyjzSuGwHFcM/pEA0xF+n1W4/0TAJgfoPX2khNEit6g0jtNA== + +"@prisma/engines@3.6.0-24.dc520b92b1ebb2d28dc3161f9f82e875bd35d727": + version "3.6.0-24.dc520b92b1ebb2d28dc3161f9f82e875bd35d727" + resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-3.6.0-24.dc520b92b1ebb2d28dc3161f9f82e875bd35d727.tgz#c68ede6aeffa9ef7743a32cfa6daf9172a4e15b3" + integrity sha512-dRClHS7DsTVchDKzeG72OaEyeDskCv91pnZ72Fftn0mp4BkUvX2LvWup65hCNzwwQm5IDd6A88APldKDnMiEMA== + "@sideway/address@^4.1.0": version "4.1.2" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.2.tgz#811b84333a335739d3969cfc434736268170cad1" @@ -1780,108 +2380,148 @@ url "^0.11.0" webpack-sources "^1.4.3" -"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" - integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== - -"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" - integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== - -"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" - integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== - -"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" - integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== - -"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" - integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== - -"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" - integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== - -"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" - integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== - -"@svgr/babel-plugin-transform-svg-component@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" - integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== - -"@svgr/babel-preset@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" - integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== +"@supabase/gotrue-js@^1.21.7": + version "1.21.7" + resolved "https://registry.yarnpkg.com/@supabase/gotrue-js/-/gotrue-js-1.21.7.tgz#ec3fdf2199a28fb65c1ae94a3c10032536c0aa4e" + integrity sha512-YnL4cO3Q+ugatWEtgCEnLt+Wwi0VpOVTPSSjSSUho2x3cH7+juRBTrVbYky/W6YVgAw/ZJrVUFPh/NcUCUhdmw== dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" - "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" - "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" - "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" - "@svgr/babel-plugin-transform-svg-component" "^5.5.0" + cross-fetch "^3.0.6" -"@svgr/core@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" - integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== +"@supabase/postgrest-js@^0.35.0": + version "0.35.0" + resolved "https://registry.yarnpkg.com/@supabase/postgrest-js/-/postgrest-js-0.35.0.tgz#a00bda3a0af75e2af6eb31b47742ba112e74686c" + integrity sha512-z+XKJ2oXuGEAEBVXseeQUXaM3ekQZK4XF0Kc399Glyg+rZaBTwNeJtY+Q/23NcIE5uNMYbTnEXm80jZbLBnWdw== dependencies: - "@svgr/plugin-jsx" "^5.5.0" + cross-fetch "^3.0.6" + +"@supabase/realtime-js@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@supabase/realtime-js/-/realtime-js-1.3.3.tgz#973c4cacf8062b4f1e435a0b250a2758e16e15f1" + integrity sha512-9D79jlo/56VQf/U7TWhu24epCoj0vWJ7ALkGcqci8Luk/iOcdCxY1NJ76BbS1UnpXEIvQxQGb1R5NSexriKcUA== + dependencies: + "@types/websocket" "^1.0.3" + websocket "^1.0.34" + +"@supabase/storage-js@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@supabase/storage-js/-/storage-js-1.5.0.tgz#5a8390e3102eaab80d394e1734b0ba6c52a3c2cc" + integrity sha512-ki2HT9FrCYRN3yoqWqX+u47TUHQ8lgSStAqV/97kMov1z2d+iIlqGBGVcaGDqq4NvK8CipG8IJARYM72oX+afA== + dependencies: + cross-fetch "^3.1.0" + +"@supabase/supabase-js@^1.28.6": + version "1.28.6" + resolved "https://registry.yarnpkg.com/@supabase/supabase-js/-/supabase-js-1.28.6.tgz#be3e85c9f1c6c3c319995d987eda08c66ead75f4" + integrity sha512-xi7txkybcCFLhEFKUFpmvp/ZV/0Ak31w1FZ0eMKAab26yYBRkZPVcogwekOOzLMgSyti/ZZXpWh2x3xMbT9smQ== + dependencies: + "@supabase/gotrue-js" "^1.21.7" + "@supabase/postgrest-js" "^0.35.0" + "@supabase/realtime-js" "^1.3.3" + "@supabase/storage-js" "^1.5.0" + +"@svgr/babel-plugin-add-jsx-attribute@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz#bd6d1ff32a31b82b601e73672a789cc41e84fe18" + integrity sha512-MdPdhdWLtQsjd29Wa4pABdhWbaRMACdM1h31BY+c6FghTZqNGT7pEYdBoaGeKtdTOBC/XNFQaKVj+r/Ei2ryWA== + +"@svgr/babel-plugin-remove-jsx-attribute@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.0.0.tgz#58654908beebfa069681a83332544b17e5237e89" + integrity sha512-aVdtfx9jlaaxc3unA6l+M9YRnKIZjOhQPthLKqmTXC8UVkBLDRGwPKo+r8n3VZN8B34+yVajzPTZ+ptTSuZZCw== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.0.0.tgz#d06dd6e8a8f603f92f9979bb9990a1f85a4f57ba" + integrity sha512-Ccj42ApsePD451AZJJf1QzTD1B/BOU392URJTeXFxSK709i0KUsGtbwyiqsKu7vsYxpTM0IA5clAKDyf9RCZyA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.0.0.tgz#0b85837577b02c31c09c758a12932820f5245cee" + integrity sha512-88V26WGyt1Sfd1emBYmBJRWMmgarrExpKNVmI9vVozha4kqs6FzQJ/Kp5+EYli1apgX44518/0+t9+NU36lThQ== + +"@svgr/babel-plugin-svg-dynamic-title@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.0.0.tgz#28236ec26f7ab9d486a487d36ae52d58ba15676f" + integrity sha512-F7YXNLfGze+xv0KMQxrl2vkNbI9kzT9oDK55/kUuymh1ACyXkMV+VZWX1zEhSTfEKh7VkHVZGmVtHg8eTZ6PRg== + +"@svgr/babel-plugin-svg-em-dimensions@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.0.0.tgz#40267c5dea1b43c4f83a0eb6169e08b43d8bafce" + integrity sha512-+rghFXxdIqJNLQK08kwPBD3Z22/0b2tEZ9lKiL/yTfuyj1wW8HUXu4bo/XkogATIYuXSghVQOOCwURXzHGKyZA== + +"@svgr/babel-plugin-transform-react-native-svg@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.0.0.tgz#eb688d0a5f539e34d268d8a516e81f5d7fede7c9" + integrity sha512-VaphyHZ+xIKv5v0K0HCzyfAaLhPGJXSk2HkpYfXIOKb7DjLBv0soHDxNv6X0vr2titsxE7klb++u7iOf7TSrFQ== + +"@svgr/babel-plugin-transform-svg-component@^6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.1.0.tgz#39f92954f7611c269a4ca6906d19e66cdc12babe" + integrity sha512-1zacrn08K5RyV2NtXahOZ5Im/+aB1Y0LVh6QpzwgQV05sY7H5Npq+OcW/UqXbfB2Ua/WnHsFossFQqigCjarYg== + +"@svgr/babel-preset@^6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.1.0.tgz#b8a6b0019537bcd75b3e23fd33c180476c1ef446" + integrity sha512-f9XrTqcwhHLVkjvXBw6QJVxuIfmW22z8iTdGqGvUGGxWoeRV2EzSHstWMBgIVd7t+TmkerqowRvBYiT0OEx3cw== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^6.0.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^6.0.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^6.0.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.0.0" + "@svgr/babel-plugin-svg-dynamic-title" "^6.0.0" + "@svgr/babel-plugin-svg-em-dimensions" "^6.0.0" + "@svgr/babel-plugin-transform-react-native-svg" "^6.0.0" + "@svgr/babel-plugin-transform-svg-component" "^6.1.0" + +"@svgr/core@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.1.2.tgz#17db14b8d559cb9dc4afa459aa487c00bf6cab80" + integrity sha512-G1UVZcPS5R+HfBG5QC7n2ibkax8RXki2sbKHySTTnajeNXbzriBJcpF4GpYzWptfvD2gmqTDY9XaX+x08TUyGQ== + dependencies: + "@svgr/plugin-jsx" "^6.1.2" camelcase "^6.2.0" - cosmiconfig "^7.0.0" + cosmiconfig "^7.0.1" -"@svgr/hast-util-to-babel-ast@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" - integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== +"@svgr/hast-util-to-babel-ast@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.0.0.tgz#423329ad866b6c169009cc82b5e28ffee80c857c" + integrity sha512-S+TxtCdDyRGafH1VG1t/uPZ87aOYOHzWL8kqz4FoSZcIbzWA6rnOmjNViNiDzqmEpzp2PW5o5mZfvC9DiVZhTQ== dependencies: - "@babel/types" "^7.12.6" + "@babel/types" "^7.15.6" + entities "^3.0.1" -"@svgr/plugin-jsx@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" - integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== +"@svgr/plugin-jsx@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.1.2.tgz#8a2815aaa46cc3d5cffa963e92b06bd0c33e7748" + integrity sha512-K/w16g3BznTjVjLyUyV0fE7LLl1HSq5KJjvczFVVvx9QG0+3xtU7RX6gvoVnTvYlrNo8QxxqLWVAU3HQm68Eew== dependencies: - "@babel/core" "^7.12.3" - "@svgr/babel-preset" "^5.5.0" - "@svgr/hast-util-to-babel-ast" "^5.5.0" + "@babel/core" "^7.15.5" + "@svgr/babel-preset" "^6.1.0" + "@svgr/hast-util-to-babel-ast" "^6.0.0" svg-parser "^2.0.2" -"@svgr/plugin-svgo@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" - integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== +"@svgr/plugin-svgo@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-6.1.2.tgz#4fe7a2defe237f0493dee947dde6fa5cea57e6c1" + integrity sha512-UHVSRZV3RdaggDT60OMIEmhskN736DOF6PuBcCaql6jBDA9+SZkA5ZMEw73ZLAlwdOAmw+0Gi4vx/xvAfnmerw== dependencies: - cosmiconfig "^7.0.0" + cosmiconfig "^7.0.1" deepmerge "^4.2.2" - svgo "^1.2.2" + svgo "^2.5.0" -"@svgr/webpack@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" - integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== +"@svgr/webpack@^6.0.0": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.1.2.tgz#23fd605e9163deb7ef3feef52545ff11dc9989bf" + integrity sha512-5RzzWxFquywENwvnsiGjZ7IED+0l2lnICR3OKQ6OUyGgxlu+ac73NmDSXp6EPBz/ZTArpMZtug7jiPMUkXxnlg== dependencies: - "@babel/core" "^7.12.3" - "@babel/plugin-transform-react-constant-elements" "^7.12.1" - "@babel/preset-env" "^7.12.1" - "@babel/preset-react" "^7.12.5" - "@svgr/core" "^5.5.0" - "@svgr/plugin-jsx" "^5.5.0" - "@svgr/plugin-svgo" "^5.5.0" - loader-utils "^2.0.0" + "@babel/core" "^7.15.5" + "@babel/plugin-transform-react-constant-elements" "^7.14.5" + "@babel/preset-env" "^7.15.6" + "@babel/preset-react" "^7.14.5" + "@babel/preset-typescript" "^7.15.0" + "@svgr/core" "^6.1.2" + "@svgr/plugin-jsx" "^6.1.2" + "@svgr/plugin-svgo" "^6.1.2" "@szmarczak/http-timer@^1.1.2": version "1.1.2" @@ -1928,11 +2568,6 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== -"@types/github-slugger@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@types/github-slugger/-/github-slugger-1.3.0.tgz#16ab393b30d8ae2a111ac748a015ac05a1fc5524" - integrity sha512-J/rMZa7RqiH/rT29TEVZO4nBoDP9XJOjnbbIofg7GQKs4JIduEO3WLpte+6WeUz/TcrXKlY+bM7FYrp8yFB+3g== - "@types/hast@^2.0.0": version "2.3.4" resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.4.tgz#8aa5ef92c117d20d974a82bdfb6a648b08c0bafc" @@ -1989,10 +2624,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-15.14.9.tgz#bc43c990c3c9be7281868bbc7b8fdd6e2b57adfa" integrity sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A== -"@types/node@^16.11.12": - version "16.11.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.12.tgz#ac7fb693ac587ee182c3780c26eb65546a1a3c10" - integrity sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw== +"@types/node@^17.0.2": + version "17.0.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.2.tgz#a4c07d47ff737e8ee7e586fe636ff0e1ddff070a" + integrity sha512-JepeIUPFDARgIs0zD/SKPgFsJEAF0X5/qO80llx59gOxFTboS9Amv3S+QfB7lqBId5sFXJ99BN0J6zFRvL9dDA== "@types/parse-json@^4.0.0": version "4.0.0" @@ -2009,11 +2644,6 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== -"@types/q@^1.5.1": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" - integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== - "@types/react-helmet@*": version "6.1.4" resolved "https://registry.yarnpkg.com/@types/react-helmet/-/react-helmet-6.1.4.tgz#3e54a3eb37ba7fb34ffafc64f425be4e68df03b9" @@ -2078,6 +2708,18 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== +"@types/w3c-web-serial@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/w3c-web-serial/-/w3c-web-serial-1.0.2.tgz#8bf21f90b40dda6d2e2e6b188417b6bd66525d03" + integrity sha512-Ftx4BtLxgAnel7V7GbHylCYjSq827A+jeEE3SnTS7huCGUN0pSwUn+CchTCT9TkZj9w+NVMUq4Bk2R0GvUNmAQ== + +"@types/websocket@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.4.tgz#1dc497280d8049a5450854dd698ee7e6ea9e60b8" + integrity sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA== + dependencies: + "@types/node" "*" + "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -2692,6 +3334,13 @@ buffer@^5.2.0, buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" +bufferutil@^4.0.1: + version "4.0.5" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.5.tgz#da9ea8166911cc276bf677b8aed2d02d31f59028" + integrity sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A== + dependencies: + node-gyp-build "^4.3.0" + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -2766,7 +3415,7 @@ ccount@^1.0.0, ccount@^1.0.3: resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== -chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2850,11 +3499,6 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -ci-info@^3.1.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" - integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== - clean-css@^5.1.5, clean-css@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.2.2.tgz#d3a7c6ee2511011e051719838bdcf8314dc4548d" @@ -2893,15 +3537,6 @@ clsx@^1.1.1: resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -3139,7 +3774,7 @@ cosmiconfig@^6.0.0: path-type "^4.0.0" yaml "^1.7.2" -cosmiconfig@^7.0.0: +cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== @@ -3150,7 +3785,7 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -cross-fetch@^3.0.4: +cross-fetch@^3.0.4, cross-fetch@^3.0.6, cross-fetch@^3.1.0: version "3.1.4" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.4.tgz#9723f3a3a247bf8b89039f3a380a9244e8fa2f39" integrity sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ== @@ -3207,21 +3842,6 @@ css-minimizer-webpack-plugin@^3.0.2: serialize-javascript "^6.0.0" source-map "^0.6.1" -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - css-select@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" @@ -3243,14 +3863,6 @@ css-select@~1.2.0: domutils "1.5.1" nth-check "~1.0.1" -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - css-tree@^1.1.2, css-tree@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" @@ -3264,11 +3876,6 @@ css-what@2.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== -css-what@^3.2.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== - css-what@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" @@ -3341,7 +3948,7 @@ cssnano@^5.0.6, cssnano@^5.0.8: lilconfig "^2.0.3" yaml "^1.10.2" -csso@^4.0.2, csso@^4.2.0: +csso@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== @@ -3353,7 +3960,15 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5" integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA== -debug@2.6.9, debug@^2.6.0: +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +debug@2.6.9, debug@^2.2.0, debug@^2.6.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -3410,7 +4025,7 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== -default-gateway@^6.0.0: +default-gateway@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== @@ -3592,7 +4207,7 @@ domutils@1.5.1: dom-serializer "0" domelementtype "1" -domutils@^1.5.1, domutils@^1.7.0: +domutils@^1.5.1: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== @@ -3689,6 +4304,11 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +entities@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" + integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -3696,166 +4316,36 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.2, es-abstract@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" - integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.1" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" - is-string "^1.0.7" - is-weakref "^1.0.1" - object-inspect "^1.11.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - es-module-lexer@^0.9.0: version "0.9.3" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" -esbuild-android-arm64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz#3fc3ff0bab76fe35dd237476b5d2b32bb20a3d44" - integrity sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg== - -esbuild-darwin-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz#8e9169c16baf444eacec60d09b24d11b255a8e72" - integrity sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ== - -esbuild-darwin-arm64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz#1b07f893b632114f805e188ddfca41b2b778229a" - integrity sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ== - -esbuild-freebsd-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz#0b8b7eca1690c8ec94c75680c38c07269c1f4a85" - integrity sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA== - -esbuild-freebsd-arm64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz#2e1a6c696bfdcd20a99578b76350b41db1934e52" - integrity sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ== - -esbuild-linux-32@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz#6fd39f36fc66dd45b6b5f515728c7bbebc342a69" - integrity sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g== - -esbuild-linux-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz#9cb8e4bcd7574e67946e4ee5f1f1e12386bb6dd3" - integrity sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA== - -esbuild-linux-arm64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz#3891aa3704ec579a1b92d2a586122e5b6a2bfba1" - integrity sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA== - -esbuild-linux-arm@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz#8a00e99e6a0c6c9a6b7f334841364d8a2b4aecfe" - integrity sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA== - -esbuild-linux-mips64le@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz#36b07cc47c3d21e48db3bb1f4d9ef8f46aead4f7" - integrity sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg== - -esbuild-linux-ppc64le@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz#f7e6bba40b9a11eb9dcae5b01550ea04670edad2" - integrity sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ== - -esbuild-loader@^2.16.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/esbuild-loader/-/esbuild-loader-2.16.0.tgz#a44a57a77ed2810d6b278579271f77d739aa7bc9" - integrity sha512-LCJEwkf+nMJbNmVYNgg/0PaIZDdr5OcHw1qbWAZLkrmBRX+KwHY/yAS6ia98UBtwzk/WhsftUBNB6tfPHgFIxw== +es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= dependencies: - esbuild "^0.13.4" - joycon "^3.0.1" - json5 "^2.2.0" - loader-utils "^2.0.0" - tapable "^2.2.0" - type-fest "^1.4.0" - webpack-sources "^2.2.0" + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" -esbuild-netbsd-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz#a2fedc549c2b629d580a732d840712b08d440038" - integrity sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w== - -esbuild-openbsd-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz#b22c0e5806d3a1fbf0325872037f885306b05cd7" - integrity sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g== - -esbuild-sunos-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz#d0b6454a88375ee8d3964daeff55c85c91c7cef4" - integrity sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw== - -esbuild-windows-32@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz#c96d0b9bbb52f3303322582ef8e4847c5ad375a7" - integrity sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw== - -esbuild-windows-64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz#1f79cb9b1e1bb02fb25cd414cb90d4ea2892c294" - integrity sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ== - -esbuild-windows-arm64@0.13.15: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz#482173070810df22a752c686509c370c3be3b3c3" - integrity sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA== - -esbuild@^0.13.4: - version "0.13.15" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.15.tgz#db56a88166ee373f87dbb2d8798ff449e0450cdf" - integrity sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw== - optionalDependencies: - esbuild-android-arm64 "0.13.15" - esbuild-darwin-64 "0.13.15" - esbuild-darwin-arm64 "0.13.15" - esbuild-freebsd-64 "0.13.15" - esbuild-freebsd-arm64 "0.13.15" - esbuild-linux-32 "0.13.15" - esbuild-linux-64 "0.13.15" - esbuild-linux-arm "0.13.15" - esbuild-linux-arm64 "0.13.15" - esbuild-linux-mips64le "0.13.15" - esbuild-linux-ppc64le "0.13.15" - esbuild-netbsd-64 "0.13.15" - esbuild-openbsd-64 "0.13.15" - esbuild-sunos-64 "0.13.15" - esbuild-windows-32 "0.13.15" - esbuild-windows-64 "0.13.15" - esbuild-windows-arm64 "0.13.15" +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" escalade@^3.1.1: version "3.1.1" @@ -3895,6 +4385,14 @@ eslint-scope@5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" +esp-web-flasher@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esp-web-flasher/-/esp-web-flasher-4.0.0.tgz#e37b6138753ac32cb736b5cab9297ab7688bd1c7" + integrity sha512-7d23iEkEjvrYkywLZtvg69GAitRJVE73dN6nmyWNmTvCe55b0UTzndLJtTHANbAiNzpgmJ7/kYnt202A7BD75A== + dependencies: + pako "^2.0.3" + tslib "^2.2.0" + esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -4015,6 +4513,13 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" +ext@^1.1.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" + integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== + dependencies: + type "^2.5.0" + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -4281,7 +4786,7 @@ gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: +get-intrinsic@^1.0.2: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== @@ -4314,14 +4819,6 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - gifwrap@^0.9.2: version "0.9.2" resolved "https://registry.yarnpkg.com/gifwrap/-/gifwrap-0.9.2.tgz#348e286e67d7cf57942172e1e6f05a71cee78489" @@ -4471,11 +4968,6 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -4826,10 +5318,10 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -infima@0.2.0-alpha.34: - version "0.2.0-alpha.34" - resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.34.tgz#14a900d79a4de2013e025ac95749a4592f16ef6e" - integrity sha512-Na6A2Tl56i1p9dzu7VOAT1Kmu3f5buz63Wvd+D9ZZWL6siQ47L7wkEZUICVKFgc5gERFZVZ/PoPB57Kl++h37Q== +infima@0.2.0-alpha.36: + version "0.2.0-alpha.36" + resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.36.tgz#205515680e2dc588ec1a07b6ce108e49b29cc810" + integrity sha512-tlhQa7S09+QzQs8hCZ9oBeD6xOFap1f2zDO4I5HRZ4SMFKKGk9sIhwaou1FWpYoqM6aaoK2YN+G1fND+Sad1Qw== inflight@^1.0.4: version "1.0.6" @@ -4864,41 +5356,17 @@ inline-style-parser@0.1.1: resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== -internal-ip@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-6.2.0.tgz#d5541e79716e406b74ac6b07b856ef18dc1621c1" - integrity sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg== - dependencies: - default-gateway "^6.0.0" - ipaddr.js "^1.9.1" - is-ip "^3.1.0" - p-event "^4.2.0" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - interpret@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -ip-regex@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" - integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== - ip@^1.1.0: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= -ipaddr.js@1.9.1, ipaddr.js@^1.9.1: +ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== @@ -4944,13 +5412,6 @@ is-arrayish@^0.3.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -4958,24 +5419,11 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - is-buffer@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -5054,30 +5502,11 @@ is-installed-globally@^0.4.0: global-dirs "^3.0.0" is-path-inside "^3.0.2" -is-ip@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" - integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== - dependencies: - ip-regex "^4.0.0" - -is-negative-zero@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - is-npm@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== -is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== - dependencies: - has-tostringtag "^1.0.0" - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -5120,7 +5549,7 @@ is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-regex@^1.0.4, is-regex@^1.1.4: +is-regex@^1.0.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== @@ -5143,42 +5572,16 @@ is-root@^2.1.0: resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== -is-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== - is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-weakref@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" - integrity sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ== - dependencies: - call-bind "^1.0.0" - is-whitespace-character@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" @@ -5241,11 +5644,6 @@ joi@^17.4.0, joi@^17.4.2: "@sideway/formula" "^3.0.0" "@sideway/pinpoint" "^2.0.0" -joycon@^3.0.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" - integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== - jpeg-js@0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.2.tgz#8b345b1ae4abde64c2da2fe67ea216a114ac279d" @@ -5313,7 +5711,7 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.2, json5@^2.2.0: +json5@^2.1.2: version "2.2.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== @@ -5610,11 +6008,6 @@ mdn-data@2.0.14: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - mdurl@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -5755,7 +6148,7 @@ mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@^0.5.1, mkdirp@^0.5.5, mkdirp@~0.5.1: +mkdirp@^0.5.1, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -5815,6 +6208,11 @@ neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + no-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" @@ -5852,6 +6250,11 @@ node-forge@^0.10.0: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== +node-gyp-build@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" + integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== + node-releases@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" @@ -5912,13 +6315,6 @@ nprogress@^0.2.0: resolved "https://registry.yarnpkg.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" integrity sha1-y480xTIT2JVyP8urkH6UIq28r7E= -nth-check@^1.0.2, nth-check@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - nth-check@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" @@ -5926,6 +6322,13 @@ nth-check@^2.0.0: dependencies: boolbase "^1.0.0" +nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -5936,11 +6339,6 @@ object-assign@^4.1.0, object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-inspect@^1.11.0, object-inspect@^1.9.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== - object-is@^1.0.1: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" @@ -5954,7 +6352,7 @@ object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.0, object.assign@^4.1.2: +object.assign@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== @@ -5964,24 +6362,6 @@ object.assign@^4.1.0, object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" -object.getownpropertydescriptors@^2.1.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" - integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.values@^1.1.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" @@ -6045,18 +6425,6 @@ p-cancelable@^1.0.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== -p-event@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" - integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== - dependencies: - p-timeout "^3.1.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -6107,13 +6475,6 @@ p-retry@^4.5.0: "@types/retry" "^0.12.0" retry "^0.13.1" -p-timeout@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== - dependencies: - p-finally "^1.0.0" - p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" @@ -6134,6 +6495,11 @@ pako@^1.0.5: resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== +pako@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.0.4.tgz#6cebc4bbb0b6c73b0d5b8d7e8476e2b2fbea576d" + integrity sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg== + param-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" @@ -6681,6 +7047,13 @@ prism-react-renderer@^1.2.1: resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.2.1.tgz#392460acf63540960e5e3caa699d851264e99b89" integrity sha512-w23ch4f75V1Tnz8DajsYKvY5lF7H1+WvzvLUcF0paFxkTHSp42RS0H5CttdN2Q8RR3DRGZ9v5xD/h3n8C8kGmg== +prisma@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/prisma/-/prisma-3.6.0.tgz#99532abc02e045e58c6133a19771bdeb28cecdbe" + integrity sha512-6SqgHS/5Rq6HtHjsWsTxlj+ySamGyCLBUQfotc2lStOjPv52IQuDVpp58GieNqc9VnfuFyHUvTZw7aQB+G2fvQ== + dependencies: + "@prisma/engines" "3.6.0-24.dc520b92b1ebb2d28dc3161f9f82e875bd35d727" + prismjs@^1.23.0: version "1.25.0" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.25.0.tgz#6f822df1bdad965734b310b315a23315cf999756" @@ -6770,11 +7143,6 @@ pure-color@^1.2.0: resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" integrity sha1-H+Bk+wrIUfDeYTIKi/eWg2Qi8z4= -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" @@ -6916,6 +7284,13 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-json-pretty@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/react-json-pretty/-/react-json-pretty-2.2.0.tgz#9ba907d2b08d87e90456d87b6025feeceb8f63cf" + integrity sha512-3UMzlAXkJ4R8S4vmkRKtvJHTewG4/rn1Q18n0zqdu/ipZbUPLVZD+QwC7uVcD/IAY3s8iNVHlgR2dMzIUS0n1A== + dependencies: + prop-types "^15.6.2" + react-json-view@^1.21.3: version "1.21.3" resolved "https://registry.yarnpkg.com/react-json-view/-/react-json-view-1.21.3.tgz#f184209ee8f1bf374fb0c41b0813cff54549c475" @@ -7335,7 +7710,7 @@ safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4: +sax@>=0.6.0, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -7564,15 +7939,6 @@ shelljs@^0.8.4: interpret "^1.0.0" rechoir "^0.6.2" -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.6" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" @@ -7642,7 +8008,7 @@ sort-css-media-queries@2.0.4: resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-2.0.4.tgz#b2badfa519cb4a938acbc6d3aaa913d4949dc908" integrity sha512-PAIsEK/XupCQwitjv7XxoMvYhT7EAfyzI3hsy/MyDgTvc+Ft55ctdkctJLOy6cQejaIC+zjpUL4djFVm2ivOOw== -source-list-map@^2.0.0, source-list-map@^2.0.1: +source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== @@ -7728,13 +8094,6 @@ state-toggle@^1.0.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -std-env@^2.2.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-2.3.1.tgz#d42271908819c243f8defc77a140fc1fcee336a1" - integrity sha512-eOsoKTWnr6C8aWrqJJ2KAReXoa7Vn5Ywyw6uCXgA/xDhxPoaIsBa5aNJmISY04dLwXPBnDHW4diGM7Sn5K4R/g== - dependencies: - ci-info "^3.1.1" - std-env@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.0.1.tgz#bc4cbc0e438610197e34c2d79c3df30b491f5182" @@ -7758,22 +8117,6 @@ string-width@^1.0.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -7879,26 +8222,7 @@ svg-parser@^2.0.2: resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== -svgo@^1.2.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -svgo@^2.7.0: +svgo@^2.5.0, svgo@^2.7.0: version "2.8.0" resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== @@ -7911,10 +8235,10 @@ svgo@^2.7.0: picocolors "^1.0.0" stable "^0.1.8" -swr@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/swr/-/swr-1.1.0.tgz#7710cdbc5ff664c13e41fba6a1fa4734f82aba35" - integrity sha512-MFL3mkl752Uap81nLA1tEu7vQmikPamSziW+6dBidYKAo4oLOlUx/x5GZy4ZCkCwfZe2uedylkz1UMGnatUX4g== +swr@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/swr/-/swr-1.1.1.tgz#f13346cc830d7950183af57b341bfabb4cc90d43" + integrity sha512-ZpUHyU3N3snj2QGFeE2Fd3BXl1CVS6YQIQGb1ttPAkTmvwZqDyV3GRMNPsaeAYCBM74tfn4XbKx28FVQR0mS7Q== tapable@^1.0.0: version "1.1.3" @@ -8049,7 +8373,7 @@ ts-essentials@^2.0.3: resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745" integrity sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w== -tslib@^2.0.3, tslib@^2.3.1: +tslib@^2.0.3, tslib@^2.2.0, tslib@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== @@ -8071,11 +8395,6 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" - integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== - type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -8084,6 +8403,16 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" + integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -8091,26 +8420,16 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^4.5.2: - version "4.5.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.2.tgz#8ac1fba9f52256fdb06fb89e4122fa6a346c2998" - integrity sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw== +typescript@^4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8" + integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg== ua-parser-js@^0.7.30: version "0.7.31" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - unherit@^1.0.4: version "1.1.3" resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" @@ -8247,11 +8566,6 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - update-notifier@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" @@ -8327,6 +8641,13 @@ use-latest@^1.0.0: dependencies: use-isomorphic-layout-effect "^1.0.0" +utf-8-validate@^5.0.2: + version "5.0.7" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.7.tgz#c15a19a6af1f7ad9ec7ddc425747ca28c3644922" + integrity sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q== + dependencies: + node-gyp-build "^4.3.0" + utif@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/utif/-/utif-2.0.1.tgz#9e1582d9bbd20011a6588548ed3266298e711759" @@ -8339,16 +8660,6 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" @@ -8459,10 +8770,10 @@ webpack-dev-middleware@^5.2.1: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.5.0.tgz#614b5112cfa4730a4801bb4ddebb3be5b0d70497" - integrity sha512-Ss4WptsUjYa+3hPI4iYZYEc8FrtnfkaPrm5WTjk9ux5kiCS718836srs0ppKMHRaCHP5mQ6g4JZGcfDdGbCjpQ== +webpack-dev-server@^4.5.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.6.0.tgz#e8648601c440172d9b6f248d28db98bed335315a" + integrity sha512-oojcBIKvx3Ya7qs1/AVWHDgmP1Xml8rGsEBnSobxU/UJSX1xP1GPM3MwsAnDzvqcVmVki8tV7lbcsjEjk0PtYg== dependencies: ansi-html-community "^0.0.8" bonjour "^3.5.0" @@ -8470,17 +8781,17 @@ webpack-dev-server@^4.4.0: colorette "^2.0.10" compression "^1.7.4" connect-history-api-fallback "^1.6.0" + default-gateway "^6.0.3" del "^6.0.0" express "^4.17.1" graceful-fs "^4.2.6" html-entities "^2.3.2" http-proxy-middleware "^2.0.0" - internal-ip "^6.2.0" ipaddr.js "^2.0.1" open "^8.0.9" p-retry "^4.5.0" portfinder "^1.0.28" - schema-utils "^3.1.0" + schema-utils "^4.0.0" selfsigned "^1.10.11" serve-index "^1.9.1" sockjs "^0.3.21" @@ -8506,14 +8817,6 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.3: source-list-map "^2.0.0" source-map "~0.6.1" -webpack-sources@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" - integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== - dependencies: - source-list-map "^2.0.1" - source-map "^0.6.1" - webpack-sources@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.2.tgz#d88e3741833efec57c4c789b6010db9977545260" @@ -8573,16 +8876,17 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== +websocket@^1.0.34: + version "1.0.34" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" + integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" which@^1.3.1: version "1.3.1" @@ -8696,6 +9000,11 @@ xtend@^4.0.0, xtend@^4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" From f186c6803ab20c60c33c7fa2380e95ac38f87411 Mon Sep 17 00:00:00 2001 From: Sacha Weatherstone Date: Tue, 21 Dec 2021 22:44:01 +1100 Subject: [PATCH 05/24] Move website to repo root --- .github/workflows/ci.yml | 3 +- .github/workflows/pr.yml | 2 - .gitmodules | 4 +- README.md | 2 + website/babel.config.js => babel.config.js | 0 .../docs => docs}/developers/android/build.md | 0 .../developers/android/mapbox.md | 0 {website/docs => docs}/developers/api.md | 0 {website/docs => docs}/developers/build.md | 0 .../docs => docs}/developers/codespaces.md | 0 .../developers/device/device-api.md | 0 .../developers/device/documents.md | 0 .../developers/device/encryption.md | 0 .../developers/device/http-api.md | 0 .../developers/device/mesh-alg.md | 0 .../developers/device/plugin-api.md | 0 .../developers/device/port-numbers.md | 0 .../developers/device/radio-settings.md | 0 {website/docs => docs}/developers/overview.md | 0 .../docs => docs}/developers/protobufs/api.md | 0 {website/docs => docs}/developers/publish.md | 0 .../docs => docs}/getting-started/concepts.md | 0 {website/docs => docs}/getting-started/faq.md | 0 .../getting-started/flashing-esp32.md | 0 .../getting-started/flashing-nrf52.md | 0 .../getting-started/getting_started.md | 0 .../docs => docs}/hardware/antenna/aerials.md | 0 .../docs => docs}/hardware/antenna/antenna.md | 0 .../hardware/antenna/non-aerial.md | 0 .../hardware/antenna/resources.md | 0 .../docs => docs}/hardware/antenna/testing.md | 0 {website/docs => docs}/hardware/buttons.md | 0 {website/docs => docs}/hardware/heltec.md | 0 {website/docs => docs}/hardware/linux.md | 0 {website/docs => docs}/hardware/lora.md | 0 {website/docs => docs}/hardware/overview.md | 0 {website/docs => docs}/hardware/rak4631.md | 0 .../hardware/supported_hardware.md | 0 {website/docs => docs}/hardware/tbeam.md | 0 {website/docs => docs}/hardware/techo.md | 0 {website/docs => docs}/legal/licensing.md | 0 {website/docs => docs}/legal/overview.md | 0 {website/docs => docs}/legal/privacy.md | 0 {website/docs => docs}/legal/trademark.md | 0 .../software/android/installation.md | 0 .../software/android/location-access.md | 0 .../docs => docs}/software/android/usage.md | 0 .../docs => docs}/software/community/atak.md | 0 .../docs => docs}/software/community/go.md | 0 .../software/community/overview.md | 0 .../docs => docs}/software/community/pygui.md | 0 .../docs => docs}/software/device/channels.md | 0 .../software/device/critical-faults.md | 0 .../docs => docs}/software/device/device.md | 0 .../docs => docs}/software/device/power.md | 0 .../software/device/remote-admin.md | 0 .../device/remote-hardware-service.md | 0 .../docs => docs}/software/device/wifi.md | 0 .../docs => docs}/software/ios/development.md | 0 .../docs => docs}/software/js/connecting.md | 0 {website/docs => docs}/software/js/events.md | 0 .../software/js/getting-started.md | 0 .../docs => docs}/software/js/http-api.md | 0 {website/docs => docs}/software/other/ant.md | 0 .../software/other/build-instructions.md | 0 .../software/other/esp32-arduino-build.md | 0 .../software/other/install-OSX.md | 0 {website/docs => docs}/software/other/mqtt.md | 0 .../software/other/nrf52-TODO.md | 0 .../docs => docs}/software/other/pinetab.md | 0 .../docs => docs}/software/other/power.md | 0 .../docs => docs}/software/other/rak815.md | 0 .../software/other/remote-hardware-service.md | 0 .../docs => docs}/software/other/sw-design.md | 0 {website/docs => docs}/software/overview.md | 0 .../software/plugins/environment.md | 0 .../plugins/external-notifications.md | 0 .../software/plugins/plugin-api.md | 0 .../docs => docs}/software/plugins/plugins.md | 0 .../software/plugins/range-test.md | 0 .../docs => docs}/software/plugins/serial.md | 0 .../software/plugins/store-forward.md | 0 {website/docs => docs}/software/python/cli.md | 0 .../software/python/installation.md | 0 .../docs => docs}/software/python/usage.md | 0 .../software/settings/channel-advanced.md | 0 .../software/settings/channel.md | 0 .../environmental-measurment-plugin.md | 0 .../settings/external-notification-plugin.md | 0 .../docs => docs}/software/settings/gps.md | 0 .../docs => docs}/software/settings/misc.md | 0 .../docs => docs}/software/settings/mqtt.md | 0 .../software/settings/overview.md | 0 .../docs => docs}/software/settings/power.md | 0 .../software/settings/range-test-plugin.md | 0 .../docs => docs}/software/settings/router.md | 0 .../software/settings/serial-plugin.md | 0 .../settings/store-and-forward-plugin.md | 0 .../docs => docs}/software/settings/wifi.md | 0 {website/docs => docs}/software/web/config.md | 0 .../docs => docs}/software/web/development.md | 0 .../docs => docs}/software/web/partitions.md | 0 {website/docs => docs}/software/web/usage.md | 0 .../docs => docs}/software/web/web-app.md | 0 docusaurus.config.js | 134 ++++++++++++++++++ website/package.json => package.json | 0 website/protobuf.tmpl => protobuf.tmpl | 0 website/sidebars.js => sidebars.js | 0 {website/src => src}/css/custom.css | 0 .../src => src}/data/hardware/rakWireless.ts | 0 .../src => src}/data/networks/_overview.ts | 0 .../networks/ckwhq3l5a000008kufkw8f3dg.ts | 0 .../src => src}/hooks/useFilteredNetworks.tsx | 0 .../src => src}/hooks/useSelectedTags.tsx | 0 .../firmware/_components/FirmwareCard.tsx | 0 {website/src => src}/pages/firmware/index.tsx | 0 {website/src => src}/pages/index.tsx | 0 .../pages/showcase/_components/Card.tsx | 0 .../pages/showcase/_components/Filters.tsx | 0 .../pages/showcase/_components/Network.tsx | 0 .../pages/showcase/_components/Networks.tsx | 0 .../pages/showcase/_components/TagSelect.tsx | 0 {website/src => src}/pages/showcase/index.tsx | 0 {website/src => src}/utils/github.ts | 0 {website/src => src}/utils/prisma.ts | 0 {website/src => src}/utils/showcase.ts | 0 .../AN1200_22_Semtech_LoRa_Basics_v2_STD.pdf | Bin .../AXP192 Datasheet_v1.1_en_draft_2211.pdf | Bin .../documents/DS_SX1261-2_V1.2.pdf | Bin .../documents/DS_SX1276-7-8-9_W_APP_V6.pdf | Bin .../documents/LoRa_Design_Guide.pdf | Bin .../NEO-6_DataSheet_(GPS.G6-HW-09005).pdf | Bin .../documents/RFM95_96_97_98W.pdf | Bin .../static => static}/documents/T-SX1262.pdf | Bin .../documents/T_BeamV1.0.pdf | Bin ...32_V1(868-915version)Schematic_diagram.PDF | Bin .../documents/WIFI_LoRa_32_V2(868-915).PDF | Bin .../air530/Air530 GPS Manual Text English.pdf | Bin .../air530/Air530_GPS_User_Booklet.V1.7.pdf | Bin .../axp192-complete-datasheet-chinese.pdf | Bin .../documents/esp32_datasheet_en.pdf | Bin .../documents/heltec-wifi-lora-32-v2-915.pdf | Bin .../documents/lora-fcc-requirements.pdf | Bin .../documents/nrf52/nrf52-programming.png | Bin .../documents/pe4259ds-rf-switch.pdf | Bin .../pinetab/PineTab LoRa schematic.pdf | Bin .../pinetab/SX1302/DS_SX1302_V1.0.pdf | Bin .../SX1302/M-GW1302S 用户手册(2)(1)(1).pdf | Bin .../M-GW1302S(射频版)硬件设计手册_V1.1.pdf | Bin .../M-GW1302(透传版)_硬件设计手册.pdf | Bin .../documents/pinetab/ch341h_datasheet.pdf | 0 .../documents/pinetab/nfnfaceblhkepdph.jpg | Bin .../documents/pinetab/nhndndegjjflkibg.jpg | Bin .../documents/rak815/PE4259.pdf | Bin .../rak815/RAK813 Module Datasheet V1.0.pdf | Bin .../RAK813_BLE_LoRa_Schematic_20180322.pdf | 0 ...K815(RAK813 BreakBoard) Datasheet V1.1.pdf | Bin ...aB_Break_Board_Schematic_V1.0_20180322.pdf | 0 .../documents/rak815/ublox max7 datasheet.pdf | 0 ...DescrProtSpec_(GPS.G6-SW-10018)_Public.pdf | Bin ...8_ReceiverDescrProtSpec_(UBX-13003221).pdf | 0 .../img/LoRa-Frequency-Bands.jpg | Bin .../img/amazon-fire-button.png | Bin .../img/android/android-accept-channel-c.png | Bin .../img/android/android-accept-channel.png | Bin .../android/android-advanced-settings-c.png | Bin .../img/android/android-advanced-settings.png | Bin .../android-bg-location-permissions.png | Bin .../img/android/android-change-channel-sm.png | Bin .../img/android/android-change-channel.png | Bin .../img/android/android-channel-owl-sm.png | Bin .../img/android/android-channel-owl.png | Bin .../img/android/android-channel-sm.png | Bin .../img/android/android-channel.png | Bin .../img/android/android-cloud-cross.png | Bin .../img/android/android-cloud-tick.png | Bin .../img/android/android-cloud-up.png | Bin .../img/android/android-debug-sm.png | Bin .../img/android/android-debug.png | Bin .../img/android/android-map-sm.png | Bin .../img/android/android-map.png | Bin .../img/android/android-messages-sm.png | Bin .../img/android/android-messages.png | Bin .../img/android/android-new-channel-sm.png | Bin .../img/android/android-new-channel.png | Bin .../img/android/android-nodes-sm.png | Bin .../img/android/android-nodes.png | Bin .../img/android/android-open-with-c.png | Bin .../img/android/android-open-with.png | Bin .../android/android-settings-deselected-c.png | Bin .../android/android-settings-deselected.png | Bin .../img/android/android-settings-mike-sm.png | Bin .../img/android/android-settings-mike.png | Bin .../img/android/android-settings-none-c.png | Bin .../img/android/android-settings-none-sm.png | Bin .../img/android/android-settings-none.png | Bin .../android/android-settings-options-c.png | Bin .../img/android/android-settings-options.png | Bin .../img/android/android-settings-sm.png | Bin .../img/android/android-settings-theme-c.png | Bin .../img/android/android-settings-theme.png | Bin .../img/android/android-settings.png | Bin .../img/android/android-stats-consent-sm.png | Bin .../img/android/android-stats-consent.png | Bin .../img/android/default-channel.png | Bin .../static => static}/img/atak-animation.gif | Bin .../codespaces/codespaces-languages-sm.png | Bin .../img/codespaces/codespaces-languages.png | Bin .../img/codespaces/codespaces-request-sm.png | Bin .../img/codespaces/codespaces-request.png | Bin .../codespaces/codespaces-waitinglist-sm.png | Bin .../img/codespaces/codespaces-waitinglist.png | Bin {website/static => static}/img/efficiency.svg | 0 .../img/hardware/heltec-v2.png | Bin .../img/hardware/heltec_v2_vs_v21.png | Bin .../static => static}/img/hardware/link.png | Bin .../img/hardware/lora-v1.3.png | Bin .../img/hardware/lora-v1.png | Bin .../img/hardware/lora-v2.0.png | Bin .../img/hardware/lora-v2.1-1.6.png | Bin .../img/hardware/lora32-v2-1.6-button.jpg | Bin .../img/hardware/meshtastic-logo.png | Bin .../img/hardware/rak/RAK11200.png | Bin .../img/hardware/rak/RAK11310.png | Bin .../img/hardware/rak/RAK12002.png | Bin .../img/hardware/rak/RAK12003.png | Bin .../img/hardware/rak/RAK12004.png | Bin .../img/hardware/rak/RAK12005.png | Bin .../img/hardware/rak/RAK12006.png | Bin .../img/hardware/rak/RAK12007.png | Bin .../img/hardware/rak/RAK12009.png | Bin .../img/hardware/rak/RAK12010.png | Bin .../img/hardware/rak/RAK12011.png | Bin .../img/hardware/rak/RAK12012.png | Bin .../img/hardware/rak/RAK12015.png | Bin .../img/hardware/rak/RAK12500.png | Bin .../img/hardware/rak/RAK13001.png | Bin .../img/hardware/rak/RAK13002.png | Bin .../img/hardware/rak/RAK13003.png | Bin .../img/hardware/rak/RAK13004.png | Bin .../img/hardware/rak/RAK13005.png | Bin .../img/hardware/rak/RAK13101.png | Bin .../img/hardware/rak/RAK14000.png | Bin .../img/hardware/rak/RAK14001.png | Bin .../img/hardware/rak/RAK14002.png | Bin .../img/hardware/rak/RAK14003.png | Bin .../img/hardware/rak/RAK15000.png | Bin .../img/hardware/rak/RAK15001.png | Bin .../img/hardware/rak/RAK15002.png | Bin .../img/hardware/rak/RAK16000.png | Bin .../img/hardware/rak/RAK16001.png | Bin .../img/hardware/rak/RAK17000.png | Bin .../img/hardware/rak/RAK18000.png | Bin .../img/hardware/rak/RAK18001.png | Bin .../img/hardware/rak/RAK19002.png | Bin .../img/hardware/rak/RAK19003.png | Bin .../img/hardware/rak/RAK19004.png | Bin .../img/hardware/rak/RAK19005.png | Bin .../img/hardware/rak/RAK19006.png | Bin .../img/hardware/rak/RAK19008.png | Bin .../img/hardware/rak/RAK1901.png | Bin .../img/hardware/rak/RAK1902.png | Bin .../img/hardware/rak/RAK1903.png | Bin .../img/hardware/rak/RAK1904.png | Bin .../img/hardware/rak/RAK1906.png | Bin .../img/hardware/rak/RAK1910.png | Bin .../img/hardware/rak/RAK1920.png | Bin .../img/hardware/rak/RAK1921.png | Bin .../img/hardware/rak/RAK2305.png | Bin .../img/hardware/rak/RAK4631.png | Bin .../img/hardware/rak/RAK5005-O.png | Bin .../img/hardware/rak/RAK5801.png | Bin .../img/hardware/rak/RAK5802.png | Bin .../img/hardware/rak/RAK5804.png | Bin .../img/hardware/rak/RAK5811.png | Bin .../img/hardware/rak/RAK5860.png | Bin .../img/hardware/rak4631.png | Bin .../static => static}/img/hardware/screen.png | Bin .../img/hardware/t-beam-m8n.png | Bin .../img/hardware/t-beam-meshtastic.png | Bin .../img/hardware/t-beam-sx1262.png | Bin .../img/hardware/t-beam-v0.7.png | Bin .../img/hardware/t-beam-v1.1.png | Bin .../img/hardware/t-echo-lilygo.jpg | Bin .../static => static}/img/hardware/t-echo.png | Bin .../img/homepage/battery.svg | 0 .../img/homepage/encryption.svg | 0 .../img/homepage/extendable.svg | 0 .../img/homepage/messages.svg | 0 .../img/homepage/opensource.svg | 0 .../img/homepage/platforms.svg | 0 .../img/insufficient-space.png | Bin .../img/platformio-erase.png | Bin .../store_and_forward-overview.png | Bin {website/static => static}/img/pygui.jpg | Bin .../img/screen/mesh-channel.jpg | Bin .../static => static}/img/screen/mesh-gps.jpg | Bin .../img/screen/mesh-message.jpg | Bin .../img/screen/mesh-node1.jpg | Bin .../img/screen/mesh-node2.jpg | Bin .../img/screen/mesh-splash.jpg | Bin .../img/screen/mesh-wifi.jpg | Bin {website/static => static}/img/software.svg | 0 .../img/undraw_docusaurus_mountain.svg | 0 .../img/undraw_docusaurus_react.svg | 0 .../img/undraw_docusaurus_tree.svg | 0 .../static => static}/img/versatility.svg | 0 website/tsconfig.json => tsconfig.json | 0 website/README.md | 27 ---- website/docusaurus.config.js | 3 +- website/static/img/meshtastic-design | 1 - website/yarn.lock => yarn.lock | 0 312 files changed, 140 insertions(+), 36 deletions(-) rename website/babel.config.js => babel.config.js (100%) rename {website/docs => docs}/developers/android/build.md (100%) rename {website/docs => docs}/developers/android/mapbox.md (100%) rename {website/docs => docs}/developers/api.md (100%) rename {website/docs => docs}/developers/build.md (100%) rename {website/docs => docs}/developers/codespaces.md (100%) rename {website/docs => docs}/developers/device/device-api.md (100%) rename {website/docs => docs}/developers/device/documents.md (100%) rename {website/docs => docs}/developers/device/encryption.md (100%) rename {website/docs => docs}/developers/device/http-api.md (100%) rename {website/docs => docs}/developers/device/mesh-alg.md (100%) rename {website/docs => docs}/developers/device/plugin-api.md (100%) rename {website/docs => docs}/developers/device/port-numbers.md (100%) rename {website/docs => docs}/developers/device/radio-settings.md (100%) rename {website/docs => docs}/developers/overview.md (100%) rename {website/docs => docs}/developers/protobufs/api.md (100%) rename {website/docs => docs}/developers/publish.md (100%) rename {website/docs => docs}/getting-started/concepts.md (100%) rename {website/docs => docs}/getting-started/faq.md (100%) rename {website/docs => docs}/getting-started/flashing-esp32.md (100%) rename {website/docs => docs}/getting-started/flashing-nrf52.md (100%) rename {website/docs => docs}/getting-started/getting_started.md (100%) rename {website/docs => docs}/hardware/antenna/aerials.md (100%) rename {website/docs => docs}/hardware/antenna/antenna.md (100%) rename {website/docs => docs}/hardware/antenna/non-aerial.md (100%) rename {website/docs => docs}/hardware/antenna/resources.md (100%) rename {website/docs => docs}/hardware/antenna/testing.md (100%) rename {website/docs => docs}/hardware/buttons.md (100%) rename {website/docs => docs}/hardware/heltec.md (100%) rename {website/docs => docs}/hardware/linux.md (100%) rename {website/docs => docs}/hardware/lora.md (100%) rename {website/docs => docs}/hardware/overview.md (100%) rename {website/docs => docs}/hardware/rak4631.md (100%) rename {website/docs => docs}/hardware/supported_hardware.md (100%) rename {website/docs => docs}/hardware/tbeam.md (100%) rename {website/docs => docs}/hardware/techo.md (100%) rename {website/docs => docs}/legal/licensing.md (100%) rename {website/docs => docs}/legal/overview.md (100%) rename {website/docs => docs}/legal/privacy.md (100%) rename {website/docs => docs}/legal/trademark.md (100%) rename {website/docs => docs}/software/android/installation.md (100%) rename {website/docs => docs}/software/android/location-access.md (100%) rename {website/docs => docs}/software/android/usage.md (100%) rename {website/docs => docs}/software/community/atak.md (100%) rename {website/docs => docs}/software/community/go.md (100%) rename {website/docs => docs}/software/community/overview.md (100%) rename {website/docs => docs}/software/community/pygui.md (100%) rename {website/docs => docs}/software/device/channels.md (100%) rename {website/docs => docs}/software/device/critical-faults.md (100%) rename {website/docs => docs}/software/device/device.md (100%) rename {website/docs => docs}/software/device/power.md (100%) rename {website/docs => docs}/software/device/remote-admin.md (100%) rename {website/docs => docs}/software/device/remote-hardware-service.md (100%) rename {website/docs => docs}/software/device/wifi.md (100%) rename {website/docs => docs}/software/ios/development.md (100%) rename {website/docs => docs}/software/js/connecting.md (100%) rename {website/docs => docs}/software/js/events.md (100%) rename {website/docs => docs}/software/js/getting-started.md (100%) rename {website/docs => docs}/software/js/http-api.md (100%) rename {website/docs => docs}/software/other/ant.md (100%) rename {website/docs => docs}/software/other/build-instructions.md (100%) rename {website/docs => docs}/software/other/esp32-arduino-build.md (100%) rename {website/docs => docs}/software/other/install-OSX.md (100%) rename {website/docs => docs}/software/other/mqtt.md (100%) rename {website/docs => docs}/software/other/nrf52-TODO.md (100%) rename {website/docs => docs}/software/other/pinetab.md (100%) rename {website/docs => docs}/software/other/power.md (100%) rename {website/docs => docs}/software/other/rak815.md (100%) rename {website/docs => docs}/software/other/remote-hardware-service.md (100%) rename {website/docs => docs}/software/other/sw-design.md (100%) rename {website/docs => docs}/software/overview.md (100%) rename {website/docs => docs}/software/plugins/environment.md (100%) rename {website/docs => docs}/software/plugins/external-notifications.md (100%) rename {website/docs => docs}/software/plugins/plugin-api.md (100%) rename {website/docs => docs}/software/plugins/plugins.md (100%) rename {website/docs => docs}/software/plugins/range-test.md (100%) rename {website/docs => docs}/software/plugins/serial.md (100%) rename {website/docs => docs}/software/plugins/store-forward.md (100%) rename {website/docs => docs}/software/python/cli.md (100%) rename {website/docs => docs}/software/python/installation.md (100%) rename {website/docs => docs}/software/python/usage.md (100%) rename {website/docs => docs}/software/settings/channel-advanced.md (100%) rename {website/docs => docs}/software/settings/channel.md (100%) rename {website/docs => docs}/software/settings/environmental-measurment-plugin.md (100%) rename {website/docs => docs}/software/settings/external-notification-plugin.md (100%) rename {website/docs => docs}/software/settings/gps.md (100%) rename {website/docs => docs}/software/settings/misc.md (100%) rename {website/docs => docs}/software/settings/mqtt.md (100%) rename {website/docs => docs}/software/settings/overview.md (100%) rename {website/docs => docs}/software/settings/power.md (100%) rename {website/docs => docs}/software/settings/range-test-plugin.md (100%) rename {website/docs => docs}/software/settings/router.md (100%) rename {website/docs => docs}/software/settings/serial-plugin.md (100%) rename {website/docs => docs}/software/settings/store-and-forward-plugin.md (100%) rename {website/docs => docs}/software/settings/wifi.md (100%) rename {website/docs => docs}/software/web/config.md (100%) rename {website/docs => docs}/software/web/development.md (100%) rename {website/docs => docs}/software/web/partitions.md (100%) rename {website/docs => docs}/software/web/usage.md (100%) rename {website/docs => docs}/software/web/web-app.md (100%) create mode 100644 docusaurus.config.js rename website/package.json => package.json (100%) rename website/protobuf.tmpl => protobuf.tmpl (100%) rename website/sidebars.js => sidebars.js (100%) rename {website/src => src}/css/custom.css (100%) rename {website/src => src}/data/hardware/rakWireless.ts (100%) rename {website/src => src}/data/networks/_overview.ts (100%) rename {website/src => src}/data/networks/ckwhq3l5a000008kufkw8f3dg.ts (100%) rename {website/src => src}/hooks/useFilteredNetworks.tsx (100%) rename {website/src => src}/hooks/useSelectedTags.tsx (100%) rename {website/src => src}/pages/firmware/_components/FirmwareCard.tsx (100%) rename {website/src => src}/pages/firmware/index.tsx (100%) rename {website/src => src}/pages/index.tsx (100%) rename {website/src => src}/pages/showcase/_components/Card.tsx (100%) rename {website/src => src}/pages/showcase/_components/Filters.tsx (100%) rename {website/src => src}/pages/showcase/_components/Network.tsx (100%) rename {website/src => src}/pages/showcase/_components/Networks.tsx (100%) rename {website/src => src}/pages/showcase/_components/TagSelect.tsx (100%) rename {website/src => src}/pages/showcase/index.tsx (100%) rename {website/src => src}/utils/github.ts (100%) rename {website/src => src}/utils/prisma.ts (100%) rename {website/src => src}/utils/showcase.ts (100%) rename {website/static => static}/documents/AN1200_22_Semtech_LoRa_Basics_v2_STD.pdf (100%) rename {website/static => static}/documents/AXP192 Datasheet_v1.1_en_draft_2211.pdf (100%) rename {website/static => static}/documents/DS_SX1261-2_V1.2.pdf (100%) rename {website/static => static}/documents/DS_SX1276-7-8-9_W_APP_V6.pdf (100%) rename {website/static => static}/documents/LoRa_Design_Guide.pdf (100%) rename {website/static => static}/documents/NEO-6_DataSheet_(GPS.G6-HW-09005).pdf (100%) rename {website/static => static}/documents/RFM95_96_97_98W.pdf (100%) rename {website/static => static}/documents/T-SX1262.pdf (100%) rename {website/static => static}/documents/T_BeamV1.0.pdf (100%) rename {website/static => static}/documents/WIFI_LoRa_32_V1(868-915version)Schematic_diagram.PDF (100%) rename {website/static => static}/documents/WIFI_LoRa_32_V2(868-915).PDF (100%) rename {website/static => static}/documents/air530/Air530 GPS Manual Text English.pdf (100%) rename {website/static => static}/documents/air530/Air530_GPS_User_Booklet.V1.7.pdf (100%) rename {website/static => static}/documents/axp192-complete-datasheet-chinese.pdf (100%) rename {website/static => static}/documents/esp32_datasheet_en.pdf (100%) rename {website/static => static}/documents/heltec-wifi-lora-32-v2-915.pdf (100%) rename {website/static => static}/documents/lora-fcc-requirements.pdf (100%) rename {website/static => static}/documents/nrf52/nrf52-programming.png (100%) rename {website/static => static}/documents/pe4259ds-rf-switch.pdf (100%) rename {website/static => static}/documents/pinetab/PineTab LoRa schematic.pdf (100%) rename {website/static => static}/documents/pinetab/SX1302/DS_SX1302_V1.0.pdf (100%) rename {website/static => static}/documents/pinetab/SX1302/M-GW1302S 用户手册(2)(1)(1).pdf (100%) rename {website/static => static}/documents/pinetab/SX1302/M-GW1302S(射频版)硬件设计手册_V1.1.pdf (100%) rename {website/static => static}/documents/pinetab/SX1302/M-GW1302(透传版)_硬件设计手册.pdf (100%) rename {website/static => static}/documents/pinetab/ch341h_datasheet.pdf (100%) rename {website/static => static}/documents/pinetab/nfnfaceblhkepdph.jpg (100%) rename {website/static => static}/documents/pinetab/nhndndegjjflkibg.jpg (100%) rename {website/static => static}/documents/rak815/PE4259.pdf (100%) rename {website/static => static}/documents/rak815/RAK813 Module Datasheet V1.0.pdf (100%) rename {website/static => static}/documents/rak815/RAK813_BLE_LoRa_Schematic_20180322.pdf (100%) rename {website/static => static}/documents/rak815/RAK815(RAK813 BreakBoard) Datasheet V1.1.pdf (100%) rename {website/static => static}/documents/rak815/RAK815_LoRaB_Break_Board_Schematic_V1.0_20180322.pdf (100%) rename {website/static => static}/documents/rak815/ublox max7 datasheet.pdf (100%) rename {website/static => static}/documents/u-blox6_ReceiverDescrProtSpec_(GPS.G6-SW-10018)_Public.pdf (100%) rename {website/static => static}/documents/u-blox8-M8_ReceiverDescrProtSpec_(UBX-13003221).pdf (100%) rename {website/static => static}/img/LoRa-Frequency-Bands.jpg (100%) rename {website/static => static}/img/amazon-fire-button.png (100%) rename {website/static => static}/img/android/android-accept-channel-c.png (100%) rename {website/static => static}/img/android/android-accept-channel.png (100%) rename {website/static => static}/img/android/android-advanced-settings-c.png (100%) rename {website/static => static}/img/android/android-advanced-settings.png (100%) rename {website/static => static}/img/android/android-bg-location-permissions.png (100%) rename {website/static => static}/img/android/android-change-channel-sm.png (100%) rename {website/static => static}/img/android/android-change-channel.png (100%) rename {website/static => static}/img/android/android-channel-owl-sm.png (100%) rename {website/static => static}/img/android/android-channel-owl.png (100%) rename {website/static => static}/img/android/android-channel-sm.png (100%) rename {website/static => static}/img/android/android-channel.png (100%) rename {website/static => static}/img/android/android-cloud-cross.png (100%) rename {website/static => static}/img/android/android-cloud-tick.png (100%) rename {website/static => static}/img/android/android-cloud-up.png (100%) rename {website/static => static}/img/android/android-debug-sm.png (100%) rename {website/static => static}/img/android/android-debug.png (100%) rename {website/static => static}/img/android/android-map-sm.png (100%) rename {website/static => static}/img/android/android-map.png (100%) rename {website/static => static}/img/android/android-messages-sm.png (100%) rename {website/static => static}/img/android/android-messages.png (100%) rename {website/static => static}/img/android/android-new-channel-sm.png (100%) rename {website/static => static}/img/android/android-new-channel.png (100%) rename {website/static => static}/img/android/android-nodes-sm.png (100%) rename {website/static => static}/img/android/android-nodes.png (100%) rename {website/static => static}/img/android/android-open-with-c.png (100%) rename {website/static => static}/img/android/android-open-with.png (100%) rename {website/static => static}/img/android/android-settings-deselected-c.png (100%) rename {website/static => static}/img/android/android-settings-deselected.png (100%) rename {website/static => static}/img/android/android-settings-mike-sm.png (100%) rename {website/static => static}/img/android/android-settings-mike.png (100%) rename {website/static => static}/img/android/android-settings-none-c.png (100%) rename {website/static => static}/img/android/android-settings-none-sm.png (100%) rename {website/static => static}/img/android/android-settings-none.png (100%) rename {website/static => static}/img/android/android-settings-options-c.png (100%) rename {website/static => static}/img/android/android-settings-options.png (100%) rename {website/static => static}/img/android/android-settings-sm.png (100%) rename {website/static => static}/img/android/android-settings-theme-c.png (100%) rename {website/static => static}/img/android/android-settings-theme.png (100%) rename {website/static => static}/img/android/android-settings.png (100%) rename {website/static => static}/img/android/android-stats-consent-sm.png (100%) rename {website/static => static}/img/android/android-stats-consent.png (100%) rename {website/static => static}/img/android/default-channel.png (100%) rename {website/static => static}/img/atak-animation.gif (100%) rename {website/static => static}/img/codespaces/codespaces-languages-sm.png (100%) rename {website/static => static}/img/codespaces/codespaces-languages.png (100%) rename {website/static => static}/img/codespaces/codespaces-request-sm.png (100%) rename {website/static => static}/img/codespaces/codespaces-request.png (100%) rename {website/static => static}/img/codespaces/codespaces-waitinglist-sm.png (100%) rename {website/static => static}/img/codespaces/codespaces-waitinglist.png (100%) rename {website/static => static}/img/efficiency.svg (100%) rename {website/static => static}/img/hardware/heltec-v2.png (100%) rename {website/static => static}/img/hardware/heltec_v2_vs_v21.png (100%) rename {website/static => static}/img/hardware/link.png (100%) rename {website/static => static}/img/hardware/lora-v1.3.png (100%) rename {website/static => static}/img/hardware/lora-v1.png (100%) rename {website/static => static}/img/hardware/lora-v2.0.png (100%) rename {website/static => static}/img/hardware/lora-v2.1-1.6.png (100%) rename {website/static => static}/img/hardware/lora32-v2-1.6-button.jpg (100%) rename {website/static => static}/img/hardware/meshtastic-logo.png (100%) rename {website/static => static}/img/hardware/rak/RAK11200.png (100%) rename {website/static => static}/img/hardware/rak/RAK11310.png (100%) rename {website/static => static}/img/hardware/rak/RAK12002.png (100%) rename {website/static => static}/img/hardware/rak/RAK12003.png (100%) rename {website/static => static}/img/hardware/rak/RAK12004.png (100%) rename {website/static => static}/img/hardware/rak/RAK12005.png (100%) rename {website/static => static}/img/hardware/rak/RAK12006.png (100%) rename {website/static => static}/img/hardware/rak/RAK12007.png (100%) rename {website/static => static}/img/hardware/rak/RAK12009.png (100%) rename {website/static => static}/img/hardware/rak/RAK12010.png (100%) rename {website/static => static}/img/hardware/rak/RAK12011.png (100%) rename {website/static => static}/img/hardware/rak/RAK12012.png (100%) rename {website/static => static}/img/hardware/rak/RAK12015.png (100%) rename {website/static => static}/img/hardware/rak/RAK12500.png (100%) rename {website/static => static}/img/hardware/rak/RAK13001.png (100%) rename {website/static => static}/img/hardware/rak/RAK13002.png (100%) rename {website/static => static}/img/hardware/rak/RAK13003.png (100%) rename {website/static => static}/img/hardware/rak/RAK13004.png (100%) rename {website/static => static}/img/hardware/rak/RAK13005.png (100%) rename {website/static => static}/img/hardware/rak/RAK13101.png (100%) rename {website/static => static}/img/hardware/rak/RAK14000.png (100%) rename {website/static => static}/img/hardware/rak/RAK14001.png (100%) rename {website/static => static}/img/hardware/rak/RAK14002.png (100%) rename {website/static => static}/img/hardware/rak/RAK14003.png (100%) rename {website/static => static}/img/hardware/rak/RAK15000.png (100%) rename {website/static => static}/img/hardware/rak/RAK15001.png (100%) rename {website/static => static}/img/hardware/rak/RAK15002.png (100%) rename {website/static => static}/img/hardware/rak/RAK16000.png (100%) rename {website/static => static}/img/hardware/rak/RAK16001.png (100%) rename {website/static => static}/img/hardware/rak/RAK17000.png (100%) rename {website/static => static}/img/hardware/rak/RAK18000.png (100%) rename {website/static => static}/img/hardware/rak/RAK18001.png (100%) rename {website/static => static}/img/hardware/rak/RAK19002.png (100%) rename {website/static => static}/img/hardware/rak/RAK19003.png (100%) rename {website/static => static}/img/hardware/rak/RAK19004.png (100%) rename {website/static => static}/img/hardware/rak/RAK19005.png (100%) rename {website/static => static}/img/hardware/rak/RAK19006.png (100%) rename {website/static => static}/img/hardware/rak/RAK19008.png (100%) rename {website/static => static}/img/hardware/rak/RAK1901.png (100%) rename {website/static => static}/img/hardware/rak/RAK1902.png (100%) rename {website/static => static}/img/hardware/rak/RAK1903.png (100%) rename {website/static => static}/img/hardware/rak/RAK1904.png (100%) rename {website/static => static}/img/hardware/rak/RAK1906.png (100%) rename {website/static => static}/img/hardware/rak/RAK1910.png (100%) rename {website/static => static}/img/hardware/rak/RAK1920.png (100%) rename {website/static => static}/img/hardware/rak/RAK1921.png (100%) rename {website/static => static}/img/hardware/rak/RAK2305.png (100%) rename {website/static => static}/img/hardware/rak/RAK4631.png (100%) rename {website/static => static}/img/hardware/rak/RAK5005-O.png (100%) rename {website/static => static}/img/hardware/rak/RAK5801.png (100%) rename {website/static => static}/img/hardware/rak/RAK5802.png (100%) rename {website/static => static}/img/hardware/rak/RAK5804.png (100%) rename {website/static => static}/img/hardware/rak/RAK5811.png (100%) rename {website/static => static}/img/hardware/rak/RAK5860.png (100%) rename {website/static => static}/img/hardware/rak4631.png (100%) rename {website/static => static}/img/hardware/screen.png (100%) rename {website/static => static}/img/hardware/t-beam-m8n.png (100%) rename {website/static => static}/img/hardware/t-beam-meshtastic.png (100%) rename {website/static => static}/img/hardware/t-beam-sx1262.png (100%) rename {website/static => static}/img/hardware/t-beam-v0.7.png (100%) rename {website/static => static}/img/hardware/t-beam-v1.1.png (100%) rename {website/static => static}/img/hardware/t-echo-lilygo.jpg (100%) rename {website/static => static}/img/hardware/t-echo.png (100%) rename {website/static => static}/img/homepage/battery.svg (100%) rename {website/static => static}/img/homepage/encryption.svg (100%) rename {website/static => static}/img/homepage/extendable.svg (100%) rename {website/static => static}/img/homepage/messages.svg (100%) rename {website/static => static}/img/homepage/opensource.svg (100%) rename {website/static => static}/img/homepage/platforms.svg (100%) rename {website/static => static}/img/insufficient-space.png (100%) rename {website/static => static}/img/platformio-erase.png (100%) rename {website/static => static}/img/plugins/store_and_forward/store_and_forward-overview.png (100%) rename {website/static => static}/img/pygui.jpg (100%) rename {website/static => static}/img/screen/mesh-channel.jpg (100%) rename {website/static => static}/img/screen/mesh-gps.jpg (100%) rename {website/static => static}/img/screen/mesh-message.jpg (100%) rename {website/static => static}/img/screen/mesh-node1.jpg (100%) rename {website/static => static}/img/screen/mesh-node2.jpg (100%) rename {website/static => static}/img/screen/mesh-splash.jpg (100%) rename {website/static => static}/img/screen/mesh-wifi.jpg (100%) rename {website/static => static}/img/software.svg (100%) rename {website/static => static}/img/undraw_docusaurus_mountain.svg (100%) rename {website/static => static}/img/undraw_docusaurus_react.svg (100%) rename {website/static => static}/img/undraw_docusaurus_tree.svg (100%) rename {website/static => static}/img/versatility.svg (100%) rename website/tsconfig.json => tsconfig.json (100%) delete mode 100644 website/README.md delete mode 160000 website/static/img/meshtastic-design rename website/yarn.lock => yarn.lock (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5a675795..e75dfc56 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: with: submodules: true - name: Generate protobuf docs - run: protoc --doc_out="website/docs/developers/protobufs" --doc_opt="./website/protobuf.tmpl,api.md" --proto_path="protobufs" protobufs/*.proto + run: protoc --doc_out="docs/developers/protobufs" --doc_opt="./protobuf.tmpl,api.md" --proto_path="protobufs" protobufs/*.proto - uses: amondnet/vercel-action@v20 with: vercel-token: ${{ secrets.VERCEL_TOKEN }} @@ -34,4 +34,3 @@ jobs: vercel-org-id: ${{ secrets.ORG_ID}} vercel-project-id: ${{ secrets.PROJECT_ID}} scope: ${{ secrets.ORG_ID}} - working-directory: website diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index aed7d998..3f3a94a8 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -13,6 +13,4 @@ jobs: with: node-version: 16 - run: yarn install - working-directory: website - run: yarn run build - working-directory: website diff --git a/.gitmodules b/.gitmodules index 5f74f27a..da64056a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,5 +1,5 @@ -[submodule "website/static/img/meshtastic-design"] - path = website/static/img/meshtastic-design +[submodule "static/img/meshtastic-design"] + path = static/img/meshtastic-design url = https://github.com/meshtastic/meshtastic-design/ [submodule "protobufs"] path = protobufs diff --git a/README.md b/README.md index a73fc603..3398b60a 100644 --- a/README.md +++ b/README.md @@ -39,3 +39,5 @@ The radios automatically create a mesh to forward packets as needed, so everyone Meshtastic uses LoRa for the long range communcations and depending on settings used the maximum theoritical group size ranges from 30-200 device nodes. Currently each device can only support a connection from a single user at a time. Please see our [website](https://meshtastic.org) for more information about Meshtastic. + +[![Powered by Vercel](https://raw.githubusercontent.com/abumalick/powered-by-vercel/master/powered-by-vercel.svg)](https://vercel.com?utm_source=meshtastic&utm_campaign=oss) diff --git a/website/babel.config.js b/babel.config.js similarity index 100% rename from website/babel.config.js rename to babel.config.js diff --git a/website/docs/developers/android/build.md b/docs/developers/android/build.md similarity index 100% rename from website/docs/developers/android/build.md rename to docs/developers/android/build.md diff --git a/website/docs/developers/android/mapbox.md b/docs/developers/android/mapbox.md similarity index 100% rename from website/docs/developers/android/mapbox.md rename to docs/developers/android/mapbox.md diff --git a/website/docs/developers/api.md b/docs/developers/api.md similarity index 100% rename from website/docs/developers/api.md rename to docs/developers/api.md diff --git a/website/docs/developers/build.md b/docs/developers/build.md similarity index 100% rename from website/docs/developers/build.md rename to docs/developers/build.md diff --git a/website/docs/developers/codespaces.md b/docs/developers/codespaces.md similarity index 100% rename from website/docs/developers/codespaces.md rename to docs/developers/codespaces.md diff --git a/website/docs/developers/device/device-api.md b/docs/developers/device/device-api.md similarity index 100% rename from website/docs/developers/device/device-api.md rename to docs/developers/device/device-api.md diff --git a/website/docs/developers/device/documents.md b/docs/developers/device/documents.md similarity index 100% rename from website/docs/developers/device/documents.md rename to docs/developers/device/documents.md diff --git a/website/docs/developers/device/encryption.md b/docs/developers/device/encryption.md similarity index 100% rename from website/docs/developers/device/encryption.md rename to docs/developers/device/encryption.md diff --git a/website/docs/developers/device/http-api.md b/docs/developers/device/http-api.md similarity index 100% rename from website/docs/developers/device/http-api.md rename to docs/developers/device/http-api.md diff --git a/website/docs/developers/device/mesh-alg.md b/docs/developers/device/mesh-alg.md similarity index 100% rename from website/docs/developers/device/mesh-alg.md rename to docs/developers/device/mesh-alg.md diff --git a/website/docs/developers/device/plugin-api.md b/docs/developers/device/plugin-api.md similarity index 100% rename from website/docs/developers/device/plugin-api.md rename to docs/developers/device/plugin-api.md diff --git a/website/docs/developers/device/port-numbers.md b/docs/developers/device/port-numbers.md similarity index 100% rename from website/docs/developers/device/port-numbers.md rename to docs/developers/device/port-numbers.md diff --git a/website/docs/developers/device/radio-settings.md b/docs/developers/device/radio-settings.md similarity index 100% rename from website/docs/developers/device/radio-settings.md rename to docs/developers/device/radio-settings.md diff --git a/website/docs/developers/overview.md b/docs/developers/overview.md similarity index 100% rename from website/docs/developers/overview.md rename to docs/developers/overview.md diff --git a/website/docs/developers/protobufs/api.md b/docs/developers/protobufs/api.md similarity index 100% rename from website/docs/developers/protobufs/api.md rename to docs/developers/protobufs/api.md diff --git a/website/docs/developers/publish.md b/docs/developers/publish.md similarity index 100% rename from website/docs/developers/publish.md rename to docs/developers/publish.md diff --git a/website/docs/getting-started/concepts.md b/docs/getting-started/concepts.md similarity index 100% rename from website/docs/getting-started/concepts.md rename to docs/getting-started/concepts.md diff --git a/website/docs/getting-started/faq.md b/docs/getting-started/faq.md similarity index 100% rename from website/docs/getting-started/faq.md rename to docs/getting-started/faq.md diff --git a/website/docs/getting-started/flashing-esp32.md b/docs/getting-started/flashing-esp32.md similarity index 100% rename from website/docs/getting-started/flashing-esp32.md rename to docs/getting-started/flashing-esp32.md diff --git a/website/docs/getting-started/flashing-nrf52.md b/docs/getting-started/flashing-nrf52.md similarity index 100% rename from website/docs/getting-started/flashing-nrf52.md rename to docs/getting-started/flashing-nrf52.md diff --git a/website/docs/getting-started/getting_started.md b/docs/getting-started/getting_started.md similarity index 100% rename from website/docs/getting-started/getting_started.md rename to docs/getting-started/getting_started.md diff --git a/website/docs/hardware/antenna/aerials.md b/docs/hardware/antenna/aerials.md similarity index 100% rename from website/docs/hardware/antenna/aerials.md rename to docs/hardware/antenna/aerials.md diff --git a/website/docs/hardware/antenna/antenna.md b/docs/hardware/antenna/antenna.md similarity index 100% rename from website/docs/hardware/antenna/antenna.md rename to docs/hardware/antenna/antenna.md diff --git a/website/docs/hardware/antenna/non-aerial.md b/docs/hardware/antenna/non-aerial.md similarity index 100% rename from website/docs/hardware/antenna/non-aerial.md rename to docs/hardware/antenna/non-aerial.md diff --git a/website/docs/hardware/antenna/resources.md b/docs/hardware/antenna/resources.md similarity index 100% rename from website/docs/hardware/antenna/resources.md rename to docs/hardware/antenna/resources.md diff --git a/website/docs/hardware/antenna/testing.md b/docs/hardware/antenna/testing.md similarity index 100% rename from website/docs/hardware/antenna/testing.md rename to docs/hardware/antenna/testing.md diff --git a/website/docs/hardware/buttons.md b/docs/hardware/buttons.md similarity index 100% rename from website/docs/hardware/buttons.md rename to docs/hardware/buttons.md diff --git a/website/docs/hardware/heltec.md b/docs/hardware/heltec.md similarity index 100% rename from website/docs/hardware/heltec.md rename to docs/hardware/heltec.md diff --git a/website/docs/hardware/linux.md b/docs/hardware/linux.md similarity index 100% rename from website/docs/hardware/linux.md rename to docs/hardware/linux.md diff --git a/website/docs/hardware/lora.md b/docs/hardware/lora.md similarity index 100% rename from website/docs/hardware/lora.md rename to docs/hardware/lora.md diff --git a/website/docs/hardware/overview.md b/docs/hardware/overview.md similarity index 100% rename from website/docs/hardware/overview.md rename to docs/hardware/overview.md diff --git a/website/docs/hardware/rak4631.md b/docs/hardware/rak4631.md similarity index 100% rename from website/docs/hardware/rak4631.md rename to docs/hardware/rak4631.md diff --git a/website/docs/hardware/supported_hardware.md b/docs/hardware/supported_hardware.md similarity index 100% rename from website/docs/hardware/supported_hardware.md rename to docs/hardware/supported_hardware.md diff --git a/website/docs/hardware/tbeam.md b/docs/hardware/tbeam.md similarity index 100% rename from website/docs/hardware/tbeam.md rename to docs/hardware/tbeam.md diff --git a/website/docs/hardware/techo.md b/docs/hardware/techo.md similarity index 100% rename from website/docs/hardware/techo.md rename to docs/hardware/techo.md diff --git a/website/docs/legal/licensing.md b/docs/legal/licensing.md similarity index 100% rename from website/docs/legal/licensing.md rename to docs/legal/licensing.md diff --git a/website/docs/legal/overview.md b/docs/legal/overview.md similarity index 100% rename from website/docs/legal/overview.md rename to docs/legal/overview.md diff --git a/website/docs/legal/privacy.md b/docs/legal/privacy.md similarity index 100% rename from website/docs/legal/privacy.md rename to docs/legal/privacy.md diff --git a/website/docs/legal/trademark.md b/docs/legal/trademark.md similarity index 100% rename from website/docs/legal/trademark.md rename to docs/legal/trademark.md diff --git a/website/docs/software/android/installation.md b/docs/software/android/installation.md similarity index 100% rename from website/docs/software/android/installation.md rename to docs/software/android/installation.md diff --git a/website/docs/software/android/location-access.md b/docs/software/android/location-access.md similarity index 100% rename from website/docs/software/android/location-access.md rename to docs/software/android/location-access.md diff --git a/website/docs/software/android/usage.md b/docs/software/android/usage.md similarity index 100% rename from website/docs/software/android/usage.md rename to docs/software/android/usage.md diff --git a/website/docs/software/community/atak.md b/docs/software/community/atak.md similarity index 100% rename from website/docs/software/community/atak.md rename to docs/software/community/atak.md diff --git a/website/docs/software/community/go.md b/docs/software/community/go.md similarity index 100% rename from website/docs/software/community/go.md rename to docs/software/community/go.md diff --git a/website/docs/software/community/overview.md b/docs/software/community/overview.md similarity index 100% rename from website/docs/software/community/overview.md rename to docs/software/community/overview.md diff --git a/website/docs/software/community/pygui.md b/docs/software/community/pygui.md similarity index 100% rename from website/docs/software/community/pygui.md rename to docs/software/community/pygui.md diff --git a/website/docs/software/device/channels.md b/docs/software/device/channels.md similarity index 100% rename from website/docs/software/device/channels.md rename to docs/software/device/channels.md diff --git a/website/docs/software/device/critical-faults.md b/docs/software/device/critical-faults.md similarity index 100% rename from website/docs/software/device/critical-faults.md rename to docs/software/device/critical-faults.md diff --git a/website/docs/software/device/device.md b/docs/software/device/device.md similarity index 100% rename from website/docs/software/device/device.md rename to docs/software/device/device.md diff --git a/website/docs/software/device/power.md b/docs/software/device/power.md similarity index 100% rename from website/docs/software/device/power.md rename to docs/software/device/power.md diff --git a/website/docs/software/device/remote-admin.md b/docs/software/device/remote-admin.md similarity index 100% rename from website/docs/software/device/remote-admin.md rename to docs/software/device/remote-admin.md diff --git a/website/docs/software/device/remote-hardware-service.md b/docs/software/device/remote-hardware-service.md similarity index 100% rename from website/docs/software/device/remote-hardware-service.md rename to docs/software/device/remote-hardware-service.md diff --git a/website/docs/software/device/wifi.md b/docs/software/device/wifi.md similarity index 100% rename from website/docs/software/device/wifi.md rename to docs/software/device/wifi.md diff --git a/website/docs/software/ios/development.md b/docs/software/ios/development.md similarity index 100% rename from website/docs/software/ios/development.md rename to docs/software/ios/development.md diff --git a/website/docs/software/js/connecting.md b/docs/software/js/connecting.md similarity index 100% rename from website/docs/software/js/connecting.md rename to docs/software/js/connecting.md diff --git a/website/docs/software/js/events.md b/docs/software/js/events.md similarity index 100% rename from website/docs/software/js/events.md rename to docs/software/js/events.md diff --git a/website/docs/software/js/getting-started.md b/docs/software/js/getting-started.md similarity index 100% rename from website/docs/software/js/getting-started.md rename to docs/software/js/getting-started.md diff --git a/website/docs/software/js/http-api.md b/docs/software/js/http-api.md similarity index 100% rename from website/docs/software/js/http-api.md rename to docs/software/js/http-api.md diff --git a/website/docs/software/other/ant.md b/docs/software/other/ant.md similarity index 100% rename from website/docs/software/other/ant.md rename to docs/software/other/ant.md diff --git a/website/docs/software/other/build-instructions.md b/docs/software/other/build-instructions.md similarity index 100% rename from website/docs/software/other/build-instructions.md rename to docs/software/other/build-instructions.md diff --git a/website/docs/software/other/esp32-arduino-build.md b/docs/software/other/esp32-arduino-build.md similarity index 100% rename from website/docs/software/other/esp32-arduino-build.md rename to docs/software/other/esp32-arduino-build.md diff --git a/website/docs/software/other/install-OSX.md b/docs/software/other/install-OSX.md similarity index 100% rename from website/docs/software/other/install-OSX.md rename to docs/software/other/install-OSX.md diff --git a/website/docs/software/other/mqtt.md b/docs/software/other/mqtt.md similarity index 100% rename from website/docs/software/other/mqtt.md rename to docs/software/other/mqtt.md diff --git a/website/docs/software/other/nrf52-TODO.md b/docs/software/other/nrf52-TODO.md similarity index 100% rename from website/docs/software/other/nrf52-TODO.md rename to docs/software/other/nrf52-TODO.md diff --git a/website/docs/software/other/pinetab.md b/docs/software/other/pinetab.md similarity index 100% rename from website/docs/software/other/pinetab.md rename to docs/software/other/pinetab.md diff --git a/website/docs/software/other/power.md b/docs/software/other/power.md similarity index 100% rename from website/docs/software/other/power.md rename to docs/software/other/power.md diff --git a/website/docs/software/other/rak815.md b/docs/software/other/rak815.md similarity index 100% rename from website/docs/software/other/rak815.md rename to docs/software/other/rak815.md diff --git a/website/docs/software/other/remote-hardware-service.md b/docs/software/other/remote-hardware-service.md similarity index 100% rename from website/docs/software/other/remote-hardware-service.md rename to docs/software/other/remote-hardware-service.md diff --git a/website/docs/software/other/sw-design.md b/docs/software/other/sw-design.md similarity index 100% rename from website/docs/software/other/sw-design.md rename to docs/software/other/sw-design.md diff --git a/website/docs/software/overview.md b/docs/software/overview.md similarity index 100% rename from website/docs/software/overview.md rename to docs/software/overview.md diff --git a/website/docs/software/plugins/environment.md b/docs/software/plugins/environment.md similarity index 100% rename from website/docs/software/plugins/environment.md rename to docs/software/plugins/environment.md diff --git a/website/docs/software/plugins/external-notifications.md b/docs/software/plugins/external-notifications.md similarity index 100% rename from website/docs/software/plugins/external-notifications.md rename to docs/software/plugins/external-notifications.md diff --git a/website/docs/software/plugins/plugin-api.md b/docs/software/plugins/plugin-api.md similarity index 100% rename from website/docs/software/plugins/plugin-api.md rename to docs/software/plugins/plugin-api.md diff --git a/website/docs/software/plugins/plugins.md b/docs/software/plugins/plugins.md similarity index 100% rename from website/docs/software/plugins/plugins.md rename to docs/software/plugins/plugins.md diff --git a/website/docs/software/plugins/range-test.md b/docs/software/plugins/range-test.md similarity index 100% rename from website/docs/software/plugins/range-test.md rename to docs/software/plugins/range-test.md diff --git a/website/docs/software/plugins/serial.md b/docs/software/plugins/serial.md similarity index 100% rename from website/docs/software/plugins/serial.md rename to docs/software/plugins/serial.md diff --git a/website/docs/software/plugins/store-forward.md b/docs/software/plugins/store-forward.md similarity index 100% rename from website/docs/software/plugins/store-forward.md rename to docs/software/plugins/store-forward.md diff --git a/website/docs/software/python/cli.md b/docs/software/python/cli.md similarity index 100% rename from website/docs/software/python/cli.md rename to docs/software/python/cli.md diff --git a/website/docs/software/python/installation.md b/docs/software/python/installation.md similarity index 100% rename from website/docs/software/python/installation.md rename to docs/software/python/installation.md diff --git a/website/docs/software/python/usage.md b/docs/software/python/usage.md similarity index 100% rename from website/docs/software/python/usage.md rename to docs/software/python/usage.md diff --git a/website/docs/software/settings/channel-advanced.md b/docs/software/settings/channel-advanced.md similarity index 100% rename from website/docs/software/settings/channel-advanced.md rename to docs/software/settings/channel-advanced.md diff --git a/website/docs/software/settings/channel.md b/docs/software/settings/channel.md similarity index 100% rename from website/docs/software/settings/channel.md rename to docs/software/settings/channel.md diff --git a/website/docs/software/settings/environmental-measurment-plugin.md b/docs/software/settings/environmental-measurment-plugin.md similarity index 100% rename from website/docs/software/settings/environmental-measurment-plugin.md rename to docs/software/settings/environmental-measurment-plugin.md diff --git a/website/docs/software/settings/external-notification-plugin.md b/docs/software/settings/external-notification-plugin.md similarity index 100% rename from website/docs/software/settings/external-notification-plugin.md rename to docs/software/settings/external-notification-plugin.md diff --git a/website/docs/software/settings/gps.md b/docs/software/settings/gps.md similarity index 100% rename from website/docs/software/settings/gps.md rename to docs/software/settings/gps.md diff --git a/website/docs/software/settings/misc.md b/docs/software/settings/misc.md similarity index 100% rename from website/docs/software/settings/misc.md rename to docs/software/settings/misc.md diff --git a/website/docs/software/settings/mqtt.md b/docs/software/settings/mqtt.md similarity index 100% rename from website/docs/software/settings/mqtt.md rename to docs/software/settings/mqtt.md diff --git a/website/docs/software/settings/overview.md b/docs/software/settings/overview.md similarity index 100% rename from website/docs/software/settings/overview.md rename to docs/software/settings/overview.md diff --git a/website/docs/software/settings/power.md b/docs/software/settings/power.md similarity index 100% rename from website/docs/software/settings/power.md rename to docs/software/settings/power.md diff --git a/website/docs/software/settings/range-test-plugin.md b/docs/software/settings/range-test-plugin.md similarity index 100% rename from website/docs/software/settings/range-test-plugin.md rename to docs/software/settings/range-test-plugin.md diff --git a/website/docs/software/settings/router.md b/docs/software/settings/router.md similarity index 100% rename from website/docs/software/settings/router.md rename to docs/software/settings/router.md diff --git a/website/docs/software/settings/serial-plugin.md b/docs/software/settings/serial-plugin.md similarity index 100% rename from website/docs/software/settings/serial-plugin.md rename to docs/software/settings/serial-plugin.md diff --git a/website/docs/software/settings/store-and-forward-plugin.md b/docs/software/settings/store-and-forward-plugin.md similarity index 100% rename from website/docs/software/settings/store-and-forward-plugin.md rename to docs/software/settings/store-and-forward-plugin.md diff --git a/website/docs/software/settings/wifi.md b/docs/software/settings/wifi.md similarity index 100% rename from website/docs/software/settings/wifi.md rename to docs/software/settings/wifi.md diff --git a/website/docs/software/web/config.md b/docs/software/web/config.md similarity index 100% rename from website/docs/software/web/config.md rename to docs/software/web/config.md diff --git a/website/docs/software/web/development.md b/docs/software/web/development.md similarity index 100% rename from website/docs/software/web/development.md rename to docs/software/web/development.md diff --git a/website/docs/software/web/partitions.md b/docs/software/web/partitions.md similarity index 100% rename from website/docs/software/web/partitions.md rename to docs/software/web/partitions.md diff --git a/website/docs/software/web/usage.md b/docs/software/web/usage.md similarity index 100% rename from website/docs/software/web/usage.md rename to docs/software/web/usage.md diff --git a/website/docs/software/web/web-app.md b/docs/software/web/web-app.md similarity index 100% rename from website/docs/software/web/web-app.md rename to docs/software/web/web-app.md diff --git a/docusaurus.config.js b/docusaurus.config.js new file mode 100644 index 00000000..5102a3f9 --- /dev/null +++ b/docusaurus.config.js @@ -0,0 +1,134 @@ +// @ts-check + +/** @type {import('@docusaurus/types').Config} */ +const config = { + title: "Meshtastic", + tagline: "Open Source hiking, pilot, skiing and secure GPS mesh communicator", + url: "https://meshtastic.org", + baseUrl: "/", + onBrokenLinks: "throw", + onBrokenMarkdownLinks: "warn", + favicon: "img/meshtastic-design/web/favicon.ico", + organizationName: "meshtastic", + projectName: "meshtastic", + themeConfig: /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ { + colorMode: { + respectPrefersColorScheme: true, + }, + announcementBar: { + id: "play_store_workaround", + content: + 'Android app unavailable in the Google Play Store store. Install by side-loading from GitHub or Amazon.', + backgroundColor: "#ff9999", + textColor: "#091E42", + isCloseable: true, + }, + navbar: { + title: "Meshtastic", + hideOnScroll: true, + logo: { + alt: "Meshtastic Logo", + src: "img/meshtastic-design/logo/svg/Mesh_Logo_Black.svg", + srcDark: "img/meshtastic-design/logo/svg/Mesh_Logo_White.svg", + }, + items: [ + { + label: "Firmware", + to: "firmware", + activeBasePath: "firmware", + }, + { + label: "Showcase", + to: "showcase", + activeBasePath: "showcase", + }, + { + label: "Docs", + to: "docs/getting-started", + activeBasePath: "docs/getting-started", + }, + { + href: "https://meshtastic.discourse.group", + label: "Forum", + position: "left", + }, + { + href: "https://github.com/meshtastic/meshtastic", + position: "right", + className: "header-github-link", + "aria-label": "GitHub repository", + }, + ], + }, + footer: { + style: "dark", + links: [ + { + title: "Docs", + items: [ + { + label: "Get Started", + to: "docs/getting-started", + }, + { + label: "Showcase", + to: "showcase", + }, + ], + }, + { + title: "Community", + items: [ + { + label: "Forum", + href: "https://meshtastic.discourse.group", + }, + { + label: "Discord", + href: "https://discord.gg/UQJ5QuM7vq", + }, + ], + }, + { + title: "More", + items: [ + { + label: "GitHub", + href: "https://github.com/meshtastic/meshtastic", + }, + { + label: "Legal", + to: "docs/legal", + }, + ], + }, + ], + copyright: `Powered by ▲ Vercel | Meshtastic® trademark is a registered trademark belonging to Geeksville Industries LLC`, + }, + algolia: { + apiKey: "01ad7e13d3fe392d2ad26da3c69dbc21", + indexName: "meshtastic", + contextualSearch: false, + searchParameters: {}, + }, + }, + + presets: [ + [ + "@docusaurus/preset-classic", + /** @type {import('@docusaurus/preset-classic').Options} */ + { + docs: { + sidebarPath: require.resolve("./sidebars.js"), + editUrl: "https://github.com/meshtastic/meshtastic/edit/master/", + }, + theme: { + customCss: require.resolve("./src/css/custom.css"), + }, + }, + ], + ], + plugins: ["@docusaurus/plugin-ideal-image"], +}; + +module.exports = config; diff --git a/website/package.json b/package.json similarity index 100% rename from website/package.json rename to package.json diff --git a/website/protobuf.tmpl b/protobuf.tmpl similarity index 100% rename from website/protobuf.tmpl rename to protobuf.tmpl diff --git a/website/sidebars.js b/sidebars.js similarity index 100% rename from website/sidebars.js rename to sidebars.js diff --git a/website/src/css/custom.css b/src/css/custom.css similarity index 100% rename from website/src/css/custom.css rename to src/css/custom.css diff --git a/website/src/data/hardware/rakWireless.ts b/src/data/hardware/rakWireless.ts similarity index 100% rename from website/src/data/hardware/rakWireless.ts rename to src/data/hardware/rakWireless.ts diff --git a/website/src/data/networks/_overview.ts b/src/data/networks/_overview.ts similarity index 100% rename from website/src/data/networks/_overview.ts rename to src/data/networks/_overview.ts diff --git a/website/src/data/networks/ckwhq3l5a000008kufkw8f3dg.ts b/src/data/networks/ckwhq3l5a000008kufkw8f3dg.ts similarity index 100% rename from website/src/data/networks/ckwhq3l5a000008kufkw8f3dg.ts rename to src/data/networks/ckwhq3l5a000008kufkw8f3dg.ts diff --git a/website/src/hooks/useFilteredNetworks.tsx b/src/hooks/useFilteredNetworks.tsx similarity index 100% rename from website/src/hooks/useFilteredNetworks.tsx rename to src/hooks/useFilteredNetworks.tsx diff --git a/website/src/hooks/useSelectedTags.tsx b/src/hooks/useSelectedTags.tsx similarity index 100% rename from website/src/hooks/useSelectedTags.tsx rename to src/hooks/useSelectedTags.tsx diff --git a/website/src/pages/firmware/_components/FirmwareCard.tsx b/src/pages/firmware/_components/FirmwareCard.tsx similarity index 100% rename from website/src/pages/firmware/_components/FirmwareCard.tsx rename to src/pages/firmware/_components/FirmwareCard.tsx diff --git a/website/src/pages/firmware/index.tsx b/src/pages/firmware/index.tsx similarity index 100% rename from website/src/pages/firmware/index.tsx rename to src/pages/firmware/index.tsx diff --git a/website/src/pages/index.tsx b/src/pages/index.tsx similarity index 100% rename from website/src/pages/index.tsx rename to src/pages/index.tsx diff --git a/website/src/pages/showcase/_components/Card.tsx b/src/pages/showcase/_components/Card.tsx similarity index 100% rename from website/src/pages/showcase/_components/Card.tsx rename to src/pages/showcase/_components/Card.tsx diff --git a/website/src/pages/showcase/_components/Filters.tsx b/src/pages/showcase/_components/Filters.tsx similarity index 100% rename from website/src/pages/showcase/_components/Filters.tsx rename to src/pages/showcase/_components/Filters.tsx diff --git a/website/src/pages/showcase/_components/Network.tsx b/src/pages/showcase/_components/Network.tsx similarity index 100% rename from website/src/pages/showcase/_components/Network.tsx rename to src/pages/showcase/_components/Network.tsx diff --git a/website/src/pages/showcase/_components/Networks.tsx b/src/pages/showcase/_components/Networks.tsx similarity index 100% rename from website/src/pages/showcase/_components/Networks.tsx rename to src/pages/showcase/_components/Networks.tsx diff --git a/website/src/pages/showcase/_components/TagSelect.tsx b/src/pages/showcase/_components/TagSelect.tsx similarity index 100% rename from website/src/pages/showcase/_components/TagSelect.tsx rename to src/pages/showcase/_components/TagSelect.tsx diff --git a/website/src/pages/showcase/index.tsx b/src/pages/showcase/index.tsx similarity index 100% rename from website/src/pages/showcase/index.tsx rename to src/pages/showcase/index.tsx diff --git a/website/src/utils/github.ts b/src/utils/github.ts similarity index 100% rename from website/src/utils/github.ts rename to src/utils/github.ts diff --git a/website/src/utils/prisma.ts b/src/utils/prisma.ts similarity index 100% rename from website/src/utils/prisma.ts rename to src/utils/prisma.ts diff --git a/website/src/utils/showcase.ts b/src/utils/showcase.ts similarity index 100% rename from website/src/utils/showcase.ts rename to src/utils/showcase.ts diff --git a/website/static/documents/AN1200_22_Semtech_LoRa_Basics_v2_STD.pdf b/static/documents/AN1200_22_Semtech_LoRa_Basics_v2_STD.pdf similarity index 100% rename from website/static/documents/AN1200_22_Semtech_LoRa_Basics_v2_STD.pdf rename to static/documents/AN1200_22_Semtech_LoRa_Basics_v2_STD.pdf diff --git a/website/static/documents/AXP192 Datasheet_v1.1_en_draft_2211.pdf b/static/documents/AXP192 Datasheet_v1.1_en_draft_2211.pdf similarity index 100% rename from website/static/documents/AXP192 Datasheet_v1.1_en_draft_2211.pdf rename to static/documents/AXP192 Datasheet_v1.1_en_draft_2211.pdf diff --git a/website/static/documents/DS_SX1261-2_V1.2.pdf b/static/documents/DS_SX1261-2_V1.2.pdf similarity index 100% rename from website/static/documents/DS_SX1261-2_V1.2.pdf rename to static/documents/DS_SX1261-2_V1.2.pdf diff --git a/website/static/documents/DS_SX1276-7-8-9_W_APP_V6.pdf b/static/documents/DS_SX1276-7-8-9_W_APP_V6.pdf similarity index 100% rename from website/static/documents/DS_SX1276-7-8-9_W_APP_V6.pdf rename to static/documents/DS_SX1276-7-8-9_W_APP_V6.pdf diff --git a/website/static/documents/LoRa_Design_Guide.pdf b/static/documents/LoRa_Design_Guide.pdf similarity index 100% rename from website/static/documents/LoRa_Design_Guide.pdf rename to static/documents/LoRa_Design_Guide.pdf diff --git a/website/static/documents/NEO-6_DataSheet_(GPS.G6-HW-09005).pdf b/static/documents/NEO-6_DataSheet_(GPS.G6-HW-09005).pdf similarity index 100% rename from website/static/documents/NEO-6_DataSheet_(GPS.G6-HW-09005).pdf rename to static/documents/NEO-6_DataSheet_(GPS.G6-HW-09005).pdf diff --git a/website/static/documents/RFM95_96_97_98W.pdf b/static/documents/RFM95_96_97_98W.pdf similarity index 100% rename from website/static/documents/RFM95_96_97_98W.pdf rename to static/documents/RFM95_96_97_98W.pdf diff --git a/website/static/documents/T-SX1262.pdf b/static/documents/T-SX1262.pdf similarity index 100% rename from website/static/documents/T-SX1262.pdf rename to static/documents/T-SX1262.pdf diff --git a/website/static/documents/T_BeamV1.0.pdf b/static/documents/T_BeamV1.0.pdf similarity index 100% rename from website/static/documents/T_BeamV1.0.pdf rename to static/documents/T_BeamV1.0.pdf diff --git a/website/static/documents/WIFI_LoRa_32_V1(868-915version)Schematic_diagram.PDF b/static/documents/WIFI_LoRa_32_V1(868-915version)Schematic_diagram.PDF similarity index 100% rename from website/static/documents/WIFI_LoRa_32_V1(868-915version)Schematic_diagram.PDF rename to static/documents/WIFI_LoRa_32_V1(868-915version)Schematic_diagram.PDF diff --git a/website/static/documents/WIFI_LoRa_32_V2(868-915).PDF b/static/documents/WIFI_LoRa_32_V2(868-915).PDF similarity index 100% rename from website/static/documents/WIFI_LoRa_32_V2(868-915).PDF rename to static/documents/WIFI_LoRa_32_V2(868-915).PDF diff --git a/website/static/documents/air530/Air530 GPS Manual Text English.pdf b/static/documents/air530/Air530 GPS Manual Text English.pdf similarity index 100% rename from website/static/documents/air530/Air530 GPS Manual Text English.pdf rename to static/documents/air530/Air530 GPS Manual Text English.pdf diff --git a/website/static/documents/air530/Air530_GPS_User_Booklet.V1.7.pdf b/static/documents/air530/Air530_GPS_User_Booklet.V1.7.pdf similarity index 100% rename from website/static/documents/air530/Air530_GPS_User_Booklet.V1.7.pdf rename to static/documents/air530/Air530_GPS_User_Booklet.V1.7.pdf diff --git a/website/static/documents/axp192-complete-datasheet-chinese.pdf b/static/documents/axp192-complete-datasheet-chinese.pdf similarity index 100% rename from website/static/documents/axp192-complete-datasheet-chinese.pdf rename to static/documents/axp192-complete-datasheet-chinese.pdf diff --git a/website/static/documents/esp32_datasheet_en.pdf b/static/documents/esp32_datasheet_en.pdf similarity index 100% rename from website/static/documents/esp32_datasheet_en.pdf rename to static/documents/esp32_datasheet_en.pdf diff --git a/website/static/documents/heltec-wifi-lora-32-v2-915.pdf b/static/documents/heltec-wifi-lora-32-v2-915.pdf similarity index 100% rename from website/static/documents/heltec-wifi-lora-32-v2-915.pdf rename to static/documents/heltec-wifi-lora-32-v2-915.pdf diff --git a/website/static/documents/lora-fcc-requirements.pdf b/static/documents/lora-fcc-requirements.pdf similarity index 100% rename from website/static/documents/lora-fcc-requirements.pdf rename to static/documents/lora-fcc-requirements.pdf diff --git a/website/static/documents/nrf52/nrf52-programming.png b/static/documents/nrf52/nrf52-programming.png similarity index 100% rename from website/static/documents/nrf52/nrf52-programming.png rename to static/documents/nrf52/nrf52-programming.png diff --git a/website/static/documents/pe4259ds-rf-switch.pdf b/static/documents/pe4259ds-rf-switch.pdf similarity index 100% rename from website/static/documents/pe4259ds-rf-switch.pdf rename to static/documents/pe4259ds-rf-switch.pdf diff --git a/website/static/documents/pinetab/PineTab LoRa schematic.pdf b/static/documents/pinetab/PineTab LoRa schematic.pdf similarity index 100% rename from website/static/documents/pinetab/PineTab LoRa schematic.pdf rename to static/documents/pinetab/PineTab LoRa schematic.pdf diff --git a/website/static/documents/pinetab/SX1302/DS_SX1302_V1.0.pdf b/static/documents/pinetab/SX1302/DS_SX1302_V1.0.pdf similarity index 100% rename from website/static/documents/pinetab/SX1302/DS_SX1302_V1.0.pdf rename to static/documents/pinetab/SX1302/DS_SX1302_V1.0.pdf diff --git a/website/static/documents/pinetab/SX1302/M-GW1302S 用户手册(2)(1)(1).pdf b/static/documents/pinetab/SX1302/M-GW1302S 用户手册(2)(1)(1).pdf similarity index 100% rename from website/static/documents/pinetab/SX1302/M-GW1302S 用户手册(2)(1)(1).pdf rename to static/documents/pinetab/SX1302/M-GW1302S 用户手册(2)(1)(1).pdf diff --git a/website/static/documents/pinetab/SX1302/M-GW1302S(射频版)硬件设计手册_V1.1.pdf b/static/documents/pinetab/SX1302/M-GW1302S(射频版)硬件设计手册_V1.1.pdf similarity index 100% rename from website/static/documents/pinetab/SX1302/M-GW1302S(射频版)硬件设计手册_V1.1.pdf rename to static/documents/pinetab/SX1302/M-GW1302S(射频版)硬件设计手册_V1.1.pdf diff --git a/website/static/documents/pinetab/SX1302/M-GW1302(透传版)_硬件设计手册.pdf b/static/documents/pinetab/SX1302/M-GW1302(透传版)_硬件设计手册.pdf similarity index 100% rename from website/static/documents/pinetab/SX1302/M-GW1302(透传版)_硬件设计手册.pdf rename to static/documents/pinetab/SX1302/M-GW1302(透传版)_硬件设计手册.pdf diff --git a/website/static/documents/pinetab/ch341h_datasheet.pdf b/static/documents/pinetab/ch341h_datasheet.pdf similarity index 100% rename from website/static/documents/pinetab/ch341h_datasheet.pdf rename to static/documents/pinetab/ch341h_datasheet.pdf diff --git a/website/static/documents/pinetab/nfnfaceblhkepdph.jpg b/static/documents/pinetab/nfnfaceblhkepdph.jpg similarity index 100% rename from website/static/documents/pinetab/nfnfaceblhkepdph.jpg rename to static/documents/pinetab/nfnfaceblhkepdph.jpg diff --git a/website/static/documents/pinetab/nhndndegjjflkibg.jpg b/static/documents/pinetab/nhndndegjjflkibg.jpg similarity index 100% rename from website/static/documents/pinetab/nhndndegjjflkibg.jpg rename to static/documents/pinetab/nhndndegjjflkibg.jpg diff --git a/website/static/documents/rak815/PE4259.pdf b/static/documents/rak815/PE4259.pdf similarity index 100% rename from website/static/documents/rak815/PE4259.pdf rename to static/documents/rak815/PE4259.pdf diff --git a/website/static/documents/rak815/RAK813 Module Datasheet V1.0.pdf b/static/documents/rak815/RAK813 Module Datasheet V1.0.pdf similarity index 100% rename from website/static/documents/rak815/RAK813 Module Datasheet V1.0.pdf rename to static/documents/rak815/RAK813 Module Datasheet V1.0.pdf diff --git a/website/static/documents/rak815/RAK813_BLE_LoRa_Schematic_20180322.pdf b/static/documents/rak815/RAK813_BLE_LoRa_Schematic_20180322.pdf similarity index 100% rename from website/static/documents/rak815/RAK813_BLE_LoRa_Schematic_20180322.pdf rename to static/documents/rak815/RAK813_BLE_LoRa_Schematic_20180322.pdf diff --git a/website/static/documents/rak815/RAK815(RAK813 BreakBoard) Datasheet V1.1.pdf b/static/documents/rak815/RAK815(RAK813 BreakBoard) Datasheet V1.1.pdf similarity index 100% rename from website/static/documents/rak815/RAK815(RAK813 BreakBoard) Datasheet V1.1.pdf rename to static/documents/rak815/RAK815(RAK813 BreakBoard) Datasheet V1.1.pdf diff --git a/website/static/documents/rak815/RAK815_LoRaB_Break_Board_Schematic_V1.0_20180322.pdf b/static/documents/rak815/RAK815_LoRaB_Break_Board_Schematic_V1.0_20180322.pdf similarity index 100% rename from website/static/documents/rak815/RAK815_LoRaB_Break_Board_Schematic_V1.0_20180322.pdf rename to static/documents/rak815/RAK815_LoRaB_Break_Board_Schematic_V1.0_20180322.pdf diff --git a/website/static/documents/rak815/ublox max7 datasheet.pdf b/static/documents/rak815/ublox max7 datasheet.pdf similarity index 100% rename from website/static/documents/rak815/ublox max7 datasheet.pdf rename to static/documents/rak815/ublox max7 datasheet.pdf diff --git a/website/static/documents/u-blox6_ReceiverDescrProtSpec_(GPS.G6-SW-10018)_Public.pdf b/static/documents/u-blox6_ReceiverDescrProtSpec_(GPS.G6-SW-10018)_Public.pdf similarity index 100% rename from website/static/documents/u-blox6_ReceiverDescrProtSpec_(GPS.G6-SW-10018)_Public.pdf rename to static/documents/u-blox6_ReceiverDescrProtSpec_(GPS.G6-SW-10018)_Public.pdf diff --git a/website/static/documents/u-blox8-M8_ReceiverDescrProtSpec_(UBX-13003221).pdf b/static/documents/u-blox8-M8_ReceiverDescrProtSpec_(UBX-13003221).pdf similarity index 100% rename from website/static/documents/u-blox8-M8_ReceiverDescrProtSpec_(UBX-13003221).pdf rename to static/documents/u-blox8-M8_ReceiverDescrProtSpec_(UBX-13003221).pdf diff --git a/website/static/img/LoRa-Frequency-Bands.jpg b/static/img/LoRa-Frequency-Bands.jpg similarity index 100% rename from website/static/img/LoRa-Frequency-Bands.jpg rename to static/img/LoRa-Frequency-Bands.jpg diff --git a/website/static/img/amazon-fire-button.png b/static/img/amazon-fire-button.png similarity index 100% rename from website/static/img/amazon-fire-button.png rename to static/img/amazon-fire-button.png diff --git a/website/static/img/android/android-accept-channel-c.png b/static/img/android/android-accept-channel-c.png similarity index 100% rename from website/static/img/android/android-accept-channel-c.png rename to static/img/android/android-accept-channel-c.png diff --git a/website/static/img/android/android-accept-channel.png b/static/img/android/android-accept-channel.png similarity index 100% rename from website/static/img/android/android-accept-channel.png rename to static/img/android/android-accept-channel.png diff --git a/website/static/img/android/android-advanced-settings-c.png b/static/img/android/android-advanced-settings-c.png similarity index 100% rename from website/static/img/android/android-advanced-settings-c.png rename to static/img/android/android-advanced-settings-c.png diff --git a/website/static/img/android/android-advanced-settings.png b/static/img/android/android-advanced-settings.png similarity index 100% rename from website/static/img/android/android-advanced-settings.png rename to static/img/android/android-advanced-settings.png diff --git a/website/static/img/android/android-bg-location-permissions.png b/static/img/android/android-bg-location-permissions.png similarity index 100% rename from website/static/img/android/android-bg-location-permissions.png rename to static/img/android/android-bg-location-permissions.png diff --git a/website/static/img/android/android-change-channel-sm.png b/static/img/android/android-change-channel-sm.png similarity index 100% rename from website/static/img/android/android-change-channel-sm.png rename to static/img/android/android-change-channel-sm.png diff --git a/website/static/img/android/android-change-channel.png b/static/img/android/android-change-channel.png similarity index 100% rename from website/static/img/android/android-change-channel.png rename to static/img/android/android-change-channel.png diff --git a/website/static/img/android/android-channel-owl-sm.png b/static/img/android/android-channel-owl-sm.png similarity index 100% rename from website/static/img/android/android-channel-owl-sm.png rename to static/img/android/android-channel-owl-sm.png diff --git a/website/static/img/android/android-channel-owl.png b/static/img/android/android-channel-owl.png similarity index 100% rename from website/static/img/android/android-channel-owl.png rename to static/img/android/android-channel-owl.png diff --git a/website/static/img/android/android-channel-sm.png b/static/img/android/android-channel-sm.png similarity index 100% rename from website/static/img/android/android-channel-sm.png rename to static/img/android/android-channel-sm.png diff --git a/website/static/img/android/android-channel.png b/static/img/android/android-channel.png similarity index 100% rename from website/static/img/android/android-channel.png rename to static/img/android/android-channel.png diff --git a/website/static/img/android/android-cloud-cross.png b/static/img/android/android-cloud-cross.png similarity index 100% rename from website/static/img/android/android-cloud-cross.png rename to static/img/android/android-cloud-cross.png diff --git a/website/static/img/android/android-cloud-tick.png b/static/img/android/android-cloud-tick.png similarity index 100% rename from website/static/img/android/android-cloud-tick.png rename to static/img/android/android-cloud-tick.png diff --git a/website/static/img/android/android-cloud-up.png b/static/img/android/android-cloud-up.png similarity index 100% rename from website/static/img/android/android-cloud-up.png rename to static/img/android/android-cloud-up.png diff --git a/website/static/img/android/android-debug-sm.png b/static/img/android/android-debug-sm.png similarity index 100% rename from website/static/img/android/android-debug-sm.png rename to static/img/android/android-debug-sm.png diff --git a/website/static/img/android/android-debug.png b/static/img/android/android-debug.png similarity index 100% rename from website/static/img/android/android-debug.png rename to static/img/android/android-debug.png diff --git a/website/static/img/android/android-map-sm.png b/static/img/android/android-map-sm.png similarity index 100% rename from website/static/img/android/android-map-sm.png rename to static/img/android/android-map-sm.png diff --git a/website/static/img/android/android-map.png b/static/img/android/android-map.png similarity index 100% rename from website/static/img/android/android-map.png rename to static/img/android/android-map.png diff --git a/website/static/img/android/android-messages-sm.png b/static/img/android/android-messages-sm.png similarity index 100% rename from website/static/img/android/android-messages-sm.png rename to static/img/android/android-messages-sm.png diff --git a/website/static/img/android/android-messages.png b/static/img/android/android-messages.png similarity index 100% rename from website/static/img/android/android-messages.png rename to static/img/android/android-messages.png diff --git a/website/static/img/android/android-new-channel-sm.png b/static/img/android/android-new-channel-sm.png similarity index 100% rename from website/static/img/android/android-new-channel-sm.png rename to static/img/android/android-new-channel-sm.png diff --git a/website/static/img/android/android-new-channel.png b/static/img/android/android-new-channel.png similarity index 100% rename from website/static/img/android/android-new-channel.png rename to static/img/android/android-new-channel.png diff --git a/website/static/img/android/android-nodes-sm.png b/static/img/android/android-nodes-sm.png similarity index 100% rename from website/static/img/android/android-nodes-sm.png rename to static/img/android/android-nodes-sm.png diff --git a/website/static/img/android/android-nodes.png b/static/img/android/android-nodes.png similarity index 100% rename from website/static/img/android/android-nodes.png rename to static/img/android/android-nodes.png diff --git a/website/static/img/android/android-open-with-c.png b/static/img/android/android-open-with-c.png similarity index 100% rename from website/static/img/android/android-open-with-c.png rename to static/img/android/android-open-with-c.png diff --git a/website/static/img/android/android-open-with.png b/static/img/android/android-open-with.png similarity index 100% rename from website/static/img/android/android-open-with.png rename to static/img/android/android-open-with.png diff --git a/website/static/img/android/android-settings-deselected-c.png b/static/img/android/android-settings-deselected-c.png similarity index 100% rename from website/static/img/android/android-settings-deselected-c.png rename to static/img/android/android-settings-deselected-c.png diff --git a/website/static/img/android/android-settings-deselected.png b/static/img/android/android-settings-deselected.png similarity index 100% rename from website/static/img/android/android-settings-deselected.png rename to static/img/android/android-settings-deselected.png diff --git a/website/static/img/android/android-settings-mike-sm.png b/static/img/android/android-settings-mike-sm.png similarity index 100% rename from website/static/img/android/android-settings-mike-sm.png rename to static/img/android/android-settings-mike-sm.png diff --git a/website/static/img/android/android-settings-mike.png b/static/img/android/android-settings-mike.png similarity index 100% rename from website/static/img/android/android-settings-mike.png rename to static/img/android/android-settings-mike.png diff --git a/website/static/img/android/android-settings-none-c.png b/static/img/android/android-settings-none-c.png similarity index 100% rename from website/static/img/android/android-settings-none-c.png rename to static/img/android/android-settings-none-c.png diff --git a/website/static/img/android/android-settings-none-sm.png b/static/img/android/android-settings-none-sm.png similarity index 100% rename from website/static/img/android/android-settings-none-sm.png rename to static/img/android/android-settings-none-sm.png diff --git a/website/static/img/android/android-settings-none.png b/static/img/android/android-settings-none.png similarity index 100% rename from website/static/img/android/android-settings-none.png rename to static/img/android/android-settings-none.png diff --git a/website/static/img/android/android-settings-options-c.png b/static/img/android/android-settings-options-c.png similarity index 100% rename from website/static/img/android/android-settings-options-c.png rename to static/img/android/android-settings-options-c.png diff --git a/website/static/img/android/android-settings-options.png b/static/img/android/android-settings-options.png similarity index 100% rename from website/static/img/android/android-settings-options.png rename to static/img/android/android-settings-options.png diff --git a/website/static/img/android/android-settings-sm.png b/static/img/android/android-settings-sm.png similarity index 100% rename from website/static/img/android/android-settings-sm.png rename to static/img/android/android-settings-sm.png diff --git a/website/static/img/android/android-settings-theme-c.png b/static/img/android/android-settings-theme-c.png similarity index 100% rename from website/static/img/android/android-settings-theme-c.png rename to static/img/android/android-settings-theme-c.png diff --git a/website/static/img/android/android-settings-theme.png b/static/img/android/android-settings-theme.png similarity index 100% rename from website/static/img/android/android-settings-theme.png rename to static/img/android/android-settings-theme.png diff --git a/website/static/img/android/android-settings.png b/static/img/android/android-settings.png similarity index 100% rename from website/static/img/android/android-settings.png rename to static/img/android/android-settings.png diff --git a/website/static/img/android/android-stats-consent-sm.png b/static/img/android/android-stats-consent-sm.png similarity index 100% rename from website/static/img/android/android-stats-consent-sm.png rename to static/img/android/android-stats-consent-sm.png diff --git a/website/static/img/android/android-stats-consent.png b/static/img/android/android-stats-consent.png similarity index 100% rename from website/static/img/android/android-stats-consent.png rename to static/img/android/android-stats-consent.png diff --git a/website/static/img/android/default-channel.png b/static/img/android/default-channel.png similarity index 100% rename from website/static/img/android/default-channel.png rename to static/img/android/default-channel.png diff --git a/website/static/img/atak-animation.gif b/static/img/atak-animation.gif similarity index 100% rename from website/static/img/atak-animation.gif rename to static/img/atak-animation.gif diff --git a/website/static/img/codespaces/codespaces-languages-sm.png b/static/img/codespaces/codespaces-languages-sm.png similarity index 100% rename from website/static/img/codespaces/codespaces-languages-sm.png rename to static/img/codespaces/codespaces-languages-sm.png diff --git a/website/static/img/codespaces/codespaces-languages.png b/static/img/codespaces/codespaces-languages.png similarity index 100% rename from website/static/img/codespaces/codespaces-languages.png rename to static/img/codespaces/codespaces-languages.png diff --git a/website/static/img/codespaces/codespaces-request-sm.png b/static/img/codespaces/codespaces-request-sm.png similarity index 100% rename from website/static/img/codespaces/codespaces-request-sm.png rename to static/img/codespaces/codespaces-request-sm.png diff --git a/website/static/img/codespaces/codespaces-request.png b/static/img/codespaces/codespaces-request.png similarity index 100% rename from website/static/img/codespaces/codespaces-request.png rename to static/img/codespaces/codespaces-request.png diff --git a/website/static/img/codespaces/codespaces-waitinglist-sm.png b/static/img/codespaces/codespaces-waitinglist-sm.png similarity index 100% rename from website/static/img/codespaces/codespaces-waitinglist-sm.png rename to static/img/codespaces/codespaces-waitinglist-sm.png diff --git a/website/static/img/codespaces/codespaces-waitinglist.png b/static/img/codespaces/codespaces-waitinglist.png similarity index 100% rename from website/static/img/codespaces/codespaces-waitinglist.png rename to static/img/codespaces/codespaces-waitinglist.png diff --git a/website/static/img/efficiency.svg b/static/img/efficiency.svg similarity index 100% rename from website/static/img/efficiency.svg rename to static/img/efficiency.svg diff --git a/website/static/img/hardware/heltec-v2.png b/static/img/hardware/heltec-v2.png similarity index 100% rename from website/static/img/hardware/heltec-v2.png rename to static/img/hardware/heltec-v2.png diff --git a/website/static/img/hardware/heltec_v2_vs_v21.png b/static/img/hardware/heltec_v2_vs_v21.png similarity index 100% rename from website/static/img/hardware/heltec_v2_vs_v21.png rename to static/img/hardware/heltec_v2_vs_v21.png diff --git a/website/static/img/hardware/link.png b/static/img/hardware/link.png similarity index 100% rename from website/static/img/hardware/link.png rename to static/img/hardware/link.png diff --git a/website/static/img/hardware/lora-v1.3.png b/static/img/hardware/lora-v1.3.png similarity index 100% rename from website/static/img/hardware/lora-v1.3.png rename to static/img/hardware/lora-v1.3.png diff --git a/website/static/img/hardware/lora-v1.png b/static/img/hardware/lora-v1.png similarity index 100% rename from website/static/img/hardware/lora-v1.png rename to static/img/hardware/lora-v1.png diff --git a/website/static/img/hardware/lora-v2.0.png b/static/img/hardware/lora-v2.0.png similarity index 100% rename from website/static/img/hardware/lora-v2.0.png rename to static/img/hardware/lora-v2.0.png diff --git a/website/static/img/hardware/lora-v2.1-1.6.png b/static/img/hardware/lora-v2.1-1.6.png similarity index 100% rename from website/static/img/hardware/lora-v2.1-1.6.png rename to static/img/hardware/lora-v2.1-1.6.png diff --git a/website/static/img/hardware/lora32-v2-1.6-button.jpg b/static/img/hardware/lora32-v2-1.6-button.jpg similarity index 100% rename from website/static/img/hardware/lora32-v2-1.6-button.jpg rename to static/img/hardware/lora32-v2-1.6-button.jpg diff --git a/website/static/img/hardware/meshtastic-logo.png b/static/img/hardware/meshtastic-logo.png similarity index 100% rename from website/static/img/hardware/meshtastic-logo.png rename to static/img/hardware/meshtastic-logo.png diff --git a/website/static/img/hardware/rak/RAK11200.png b/static/img/hardware/rak/RAK11200.png similarity index 100% rename from website/static/img/hardware/rak/RAK11200.png rename to static/img/hardware/rak/RAK11200.png diff --git a/website/static/img/hardware/rak/RAK11310.png b/static/img/hardware/rak/RAK11310.png similarity index 100% rename from website/static/img/hardware/rak/RAK11310.png rename to static/img/hardware/rak/RAK11310.png diff --git a/website/static/img/hardware/rak/RAK12002.png b/static/img/hardware/rak/RAK12002.png similarity index 100% rename from website/static/img/hardware/rak/RAK12002.png rename to static/img/hardware/rak/RAK12002.png diff --git a/website/static/img/hardware/rak/RAK12003.png b/static/img/hardware/rak/RAK12003.png similarity index 100% rename from website/static/img/hardware/rak/RAK12003.png rename to static/img/hardware/rak/RAK12003.png diff --git a/website/static/img/hardware/rak/RAK12004.png b/static/img/hardware/rak/RAK12004.png similarity index 100% rename from website/static/img/hardware/rak/RAK12004.png rename to static/img/hardware/rak/RAK12004.png diff --git a/website/static/img/hardware/rak/RAK12005.png b/static/img/hardware/rak/RAK12005.png similarity index 100% rename from website/static/img/hardware/rak/RAK12005.png rename to static/img/hardware/rak/RAK12005.png diff --git a/website/static/img/hardware/rak/RAK12006.png b/static/img/hardware/rak/RAK12006.png similarity index 100% rename from website/static/img/hardware/rak/RAK12006.png rename to static/img/hardware/rak/RAK12006.png diff --git a/website/static/img/hardware/rak/RAK12007.png b/static/img/hardware/rak/RAK12007.png similarity index 100% rename from website/static/img/hardware/rak/RAK12007.png rename to static/img/hardware/rak/RAK12007.png diff --git a/website/static/img/hardware/rak/RAK12009.png b/static/img/hardware/rak/RAK12009.png similarity index 100% rename from website/static/img/hardware/rak/RAK12009.png rename to static/img/hardware/rak/RAK12009.png diff --git a/website/static/img/hardware/rak/RAK12010.png b/static/img/hardware/rak/RAK12010.png similarity index 100% rename from website/static/img/hardware/rak/RAK12010.png rename to static/img/hardware/rak/RAK12010.png diff --git a/website/static/img/hardware/rak/RAK12011.png b/static/img/hardware/rak/RAK12011.png similarity index 100% rename from website/static/img/hardware/rak/RAK12011.png rename to static/img/hardware/rak/RAK12011.png diff --git a/website/static/img/hardware/rak/RAK12012.png b/static/img/hardware/rak/RAK12012.png similarity index 100% rename from website/static/img/hardware/rak/RAK12012.png rename to static/img/hardware/rak/RAK12012.png diff --git a/website/static/img/hardware/rak/RAK12015.png b/static/img/hardware/rak/RAK12015.png similarity index 100% rename from website/static/img/hardware/rak/RAK12015.png rename to static/img/hardware/rak/RAK12015.png diff --git a/website/static/img/hardware/rak/RAK12500.png b/static/img/hardware/rak/RAK12500.png similarity index 100% rename from website/static/img/hardware/rak/RAK12500.png rename to static/img/hardware/rak/RAK12500.png diff --git a/website/static/img/hardware/rak/RAK13001.png b/static/img/hardware/rak/RAK13001.png similarity index 100% rename from website/static/img/hardware/rak/RAK13001.png rename to static/img/hardware/rak/RAK13001.png diff --git a/website/static/img/hardware/rak/RAK13002.png b/static/img/hardware/rak/RAK13002.png similarity index 100% rename from website/static/img/hardware/rak/RAK13002.png rename to static/img/hardware/rak/RAK13002.png diff --git a/website/static/img/hardware/rak/RAK13003.png b/static/img/hardware/rak/RAK13003.png similarity index 100% rename from website/static/img/hardware/rak/RAK13003.png rename to static/img/hardware/rak/RAK13003.png diff --git a/website/static/img/hardware/rak/RAK13004.png b/static/img/hardware/rak/RAK13004.png similarity index 100% rename from website/static/img/hardware/rak/RAK13004.png rename to static/img/hardware/rak/RAK13004.png diff --git a/website/static/img/hardware/rak/RAK13005.png b/static/img/hardware/rak/RAK13005.png similarity index 100% rename from website/static/img/hardware/rak/RAK13005.png rename to static/img/hardware/rak/RAK13005.png diff --git a/website/static/img/hardware/rak/RAK13101.png b/static/img/hardware/rak/RAK13101.png similarity index 100% rename from website/static/img/hardware/rak/RAK13101.png rename to static/img/hardware/rak/RAK13101.png diff --git a/website/static/img/hardware/rak/RAK14000.png b/static/img/hardware/rak/RAK14000.png similarity index 100% rename from website/static/img/hardware/rak/RAK14000.png rename to static/img/hardware/rak/RAK14000.png diff --git a/website/static/img/hardware/rak/RAK14001.png b/static/img/hardware/rak/RAK14001.png similarity index 100% rename from website/static/img/hardware/rak/RAK14001.png rename to static/img/hardware/rak/RAK14001.png diff --git a/website/static/img/hardware/rak/RAK14002.png b/static/img/hardware/rak/RAK14002.png similarity index 100% rename from website/static/img/hardware/rak/RAK14002.png rename to static/img/hardware/rak/RAK14002.png diff --git a/website/static/img/hardware/rak/RAK14003.png b/static/img/hardware/rak/RAK14003.png similarity index 100% rename from website/static/img/hardware/rak/RAK14003.png rename to static/img/hardware/rak/RAK14003.png diff --git a/website/static/img/hardware/rak/RAK15000.png b/static/img/hardware/rak/RAK15000.png similarity index 100% rename from website/static/img/hardware/rak/RAK15000.png rename to static/img/hardware/rak/RAK15000.png diff --git a/website/static/img/hardware/rak/RAK15001.png b/static/img/hardware/rak/RAK15001.png similarity index 100% rename from website/static/img/hardware/rak/RAK15001.png rename to static/img/hardware/rak/RAK15001.png diff --git a/website/static/img/hardware/rak/RAK15002.png b/static/img/hardware/rak/RAK15002.png similarity index 100% rename from website/static/img/hardware/rak/RAK15002.png rename to static/img/hardware/rak/RAK15002.png diff --git a/website/static/img/hardware/rak/RAK16000.png b/static/img/hardware/rak/RAK16000.png similarity index 100% rename from website/static/img/hardware/rak/RAK16000.png rename to static/img/hardware/rak/RAK16000.png diff --git a/website/static/img/hardware/rak/RAK16001.png b/static/img/hardware/rak/RAK16001.png similarity index 100% rename from website/static/img/hardware/rak/RAK16001.png rename to static/img/hardware/rak/RAK16001.png diff --git a/website/static/img/hardware/rak/RAK17000.png b/static/img/hardware/rak/RAK17000.png similarity index 100% rename from website/static/img/hardware/rak/RAK17000.png rename to static/img/hardware/rak/RAK17000.png diff --git a/website/static/img/hardware/rak/RAK18000.png b/static/img/hardware/rak/RAK18000.png similarity index 100% rename from website/static/img/hardware/rak/RAK18000.png rename to static/img/hardware/rak/RAK18000.png diff --git a/website/static/img/hardware/rak/RAK18001.png b/static/img/hardware/rak/RAK18001.png similarity index 100% rename from website/static/img/hardware/rak/RAK18001.png rename to static/img/hardware/rak/RAK18001.png diff --git a/website/static/img/hardware/rak/RAK19002.png b/static/img/hardware/rak/RAK19002.png similarity index 100% rename from website/static/img/hardware/rak/RAK19002.png rename to static/img/hardware/rak/RAK19002.png diff --git a/website/static/img/hardware/rak/RAK19003.png b/static/img/hardware/rak/RAK19003.png similarity index 100% rename from website/static/img/hardware/rak/RAK19003.png rename to static/img/hardware/rak/RAK19003.png diff --git a/website/static/img/hardware/rak/RAK19004.png b/static/img/hardware/rak/RAK19004.png similarity index 100% rename from website/static/img/hardware/rak/RAK19004.png rename to static/img/hardware/rak/RAK19004.png diff --git a/website/static/img/hardware/rak/RAK19005.png b/static/img/hardware/rak/RAK19005.png similarity index 100% rename from website/static/img/hardware/rak/RAK19005.png rename to static/img/hardware/rak/RAK19005.png diff --git a/website/static/img/hardware/rak/RAK19006.png b/static/img/hardware/rak/RAK19006.png similarity index 100% rename from website/static/img/hardware/rak/RAK19006.png rename to static/img/hardware/rak/RAK19006.png diff --git a/website/static/img/hardware/rak/RAK19008.png b/static/img/hardware/rak/RAK19008.png similarity index 100% rename from website/static/img/hardware/rak/RAK19008.png rename to static/img/hardware/rak/RAK19008.png diff --git a/website/static/img/hardware/rak/RAK1901.png b/static/img/hardware/rak/RAK1901.png similarity index 100% rename from website/static/img/hardware/rak/RAK1901.png rename to static/img/hardware/rak/RAK1901.png diff --git a/website/static/img/hardware/rak/RAK1902.png b/static/img/hardware/rak/RAK1902.png similarity index 100% rename from website/static/img/hardware/rak/RAK1902.png rename to static/img/hardware/rak/RAK1902.png diff --git a/website/static/img/hardware/rak/RAK1903.png b/static/img/hardware/rak/RAK1903.png similarity index 100% rename from website/static/img/hardware/rak/RAK1903.png rename to static/img/hardware/rak/RAK1903.png diff --git a/website/static/img/hardware/rak/RAK1904.png b/static/img/hardware/rak/RAK1904.png similarity index 100% rename from website/static/img/hardware/rak/RAK1904.png rename to static/img/hardware/rak/RAK1904.png diff --git a/website/static/img/hardware/rak/RAK1906.png b/static/img/hardware/rak/RAK1906.png similarity index 100% rename from website/static/img/hardware/rak/RAK1906.png rename to static/img/hardware/rak/RAK1906.png diff --git a/website/static/img/hardware/rak/RAK1910.png b/static/img/hardware/rak/RAK1910.png similarity index 100% rename from website/static/img/hardware/rak/RAK1910.png rename to static/img/hardware/rak/RAK1910.png diff --git a/website/static/img/hardware/rak/RAK1920.png b/static/img/hardware/rak/RAK1920.png similarity index 100% rename from website/static/img/hardware/rak/RAK1920.png rename to static/img/hardware/rak/RAK1920.png diff --git a/website/static/img/hardware/rak/RAK1921.png b/static/img/hardware/rak/RAK1921.png similarity index 100% rename from website/static/img/hardware/rak/RAK1921.png rename to static/img/hardware/rak/RAK1921.png diff --git a/website/static/img/hardware/rak/RAK2305.png b/static/img/hardware/rak/RAK2305.png similarity index 100% rename from website/static/img/hardware/rak/RAK2305.png rename to static/img/hardware/rak/RAK2305.png diff --git a/website/static/img/hardware/rak/RAK4631.png b/static/img/hardware/rak/RAK4631.png similarity index 100% rename from website/static/img/hardware/rak/RAK4631.png rename to static/img/hardware/rak/RAK4631.png diff --git a/website/static/img/hardware/rak/RAK5005-O.png b/static/img/hardware/rak/RAK5005-O.png similarity index 100% rename from website/static/img/hardware/rak/RAK5005-O.png rename to static/img/hardware/rak/RAK5005-O.png diff --git a/website/static/img/hardware/rak/RAK5801.png b/static/img/hardware/rak/RAK5801.png similarity index 100% rename from website/static/img/hardware/rak/RAK5801.png rename to static/img/hardware/rak/RAK5801.png diff --git a/website/static/img/hardware/rak/RAK5802.png b/static/img/hardware/rak/RAK5802.png similarity index 100% rename from website/static/img/hardware/rak/RAK5802.png rename to static/img/hardware/rak/RAK5802.png diff --git a/website/static/img/hardware/rak/RAK5804.png b/static/img/hardware/rak/RAK5804.png similarity index 100% rename from website/static/img/hardware/rak/RAK5804.png rename to static/img/hardware/rak/RAK5804.png diff --git a/website/static/img/hardware/rak/RAK5811.png b/static/img/hardware/rak/RAK5811.png similarity index 100% rename from website/static/img/hardware/rak/RAK5811.png rename to static/img/hardware/rak/RAK5811.png diff --git a/website/static/img/hardware/rak/RAK5860.png b/static/img/hardware/rak/RAK5860.png similarity index 100% rename from website/static/img/hardware/rak/RAK5860.png rename to static/img/hardware/rak/RAK5860.png diff --git a/website/static/img/hardware/rak4631.png b/static/img/hardware/rak4631.png similarity index 100% rename from website/static/img/hardware/rak4631.png rename to static/img/hardware/rak4631.png diff --git a/website/static/img/hardware/screen.png b/static/img/hardware/screen.png similarity index 100% rename from website/static/img/hardware/screen.png rename to static/img/hardware/screen.png diff --git a/website/static/img/hardware/t-beam-m8n.png b/static/img/hardware/t-beam-m8n.png similarity index 100% rename from website/static/img/hardware/t-beam-m8n.png rename to static/img/hardware/t-beam-m8n.png diff --git a/website/static/img/hardware/t-beam-meshtastic.png b/static/img/hardware/t-beam-meshtastic.png similarity index 100% rename from website/static/img/hardware/t-beam-meshtastic.png rename to static/img/hardware/t-beam-meshtastic.png diff --git a/website/static/img/hardware/t-beam-sx1262.png b/static/img/hardware/t-beam-sx1262.png similarity index 100% rename from website/static/img/hardware/t-beam-sx1262.png rename to static/img/hardware/t-beam-sx1262.png diff --git a/website/static/img/hardware/t-beam-v0.7.png b/static/img/hardware/t-beam-v0.7.png similarity index 100% rename from website/static/img/hardware/t-beam-v0.7.png rename to static/img/hardware/t-beam-v0.7.png diff --git a/website/static/img/hardware/t-beam-v1.1.png b/static/img/hardware/t-beam-v1.1.png similarity index 100% rename from website/static/img/hardware/t-beam-v1.1.png rename to static/img/hardware/t-beam-v1.1.png diff --git a/website/static/img/hardware/t-echo-lilygo.jpg b/static/img/hardware/t-echo-lilygo.jpg similarity index 100% rename from website/static/img/hardware/t-echo-lilygo.jpg rename to static/img/hardware/t-echo-lilygo.jpg diff --git a/website/static/img/hardware/t-echo.png b/static/img/hardware/t-echo.png similarity index 100% rename from website/static/img/hardware/t-echo.png rename to static/img/hardware/t-echo.png diff --git a/website/static/img/homepage/battery.svg b/static/img/homepage/battery.svg similarity index 100% rename from website/static/img/homepage/battery.svg rename to static/img/homepage/battery.svg diff --git a/website/static/img/homepage/encryption.svg b/static/img/homepage/encryption.svg similarity index 100% rename from website/static/img/homepage/encryption.svg rename to static/img/homepage/encryption.svg diff --git a/website/static/img/homepage/extendable.svg b/static/img/homepage/extendable.svg similarity index 100% rename from website/static/img/homepage/extendable.svg rename to static/img/homepage/extendable.svg diff --git a/website/static/img/homepage/messages.svg b/static/img/homepage/messages.svg similarity index 100% rename from website/static/img/homepage/messages.svg rename to static/img/homepage/messages.svg diff --git a/website/static/img/homepage/opensource.svg b/static/img/homepage/opensource.svg similarity index 100% rename from website/static/img/homepage/opensource.svg rename to static/img/homepage/opensource.svg diff --git a/website/static/img/homepage/platforms.svg b/static/img/homepage/platforms.svg similarity index 100% rename from website/static/img/homepage/platforms.svg rename to static/img/homepage/platforms.svg diff --git a/website/static/img/insufficient-space.png b/static/img/insufficient-space.png similarity index 100% rename from website/static/img/insufficient-space.png rename to static/img/insufficient-space.png diff --git a/website/static/img/platformio-erase.png b/static/img/platformio-erase.png similarity index 100% rename from website/static/img/platformio-erase.png rename to static/img/platformio-erase.png diff --git a/website/static/img/plugins/store_and_forward/store_and_forward-overview.png b/static/img/plugins/store_and_forward/store_and_forward-overview.png similarity index 100% rename from website/static/img/plugins/store_and_forward/store_and_forward-overview.png rename to static/img/plugins/store_and_forward/store_and_forward-overview.png diff --git a/website/static/img/pygui.jpg b/static/img/pygui.jpg similarity index 100% rename from website/static/img/pygui.jpg rename to static/img/pygui.jpg diff --git a/website/static/img/screen/mesh-channel.jpg b/static/img/screen/mesh-channel.jpg similarity index 100% rename from website/static/img/screen/mesh-channel.jpg rename to static/img/screen/mesh-channel.jpg diff --git a/website/static/img/screen/mesh-gps.jpg b/static/img/screen/mesh-gps.jpg similarity index 100% rename from website/static/img/screen/mesh-gps.jpg rename to static/img/screen/mesh-gps.jpg diff --git a/website/static/img/screen/mesh-message.jpg b/static/img/screen/mesh-message.jpg similarity index 100% rename from website/static/img/screen/mesh-message.jpg rename to static/img/screen/mesh-message.jpg diff --git a/website/static/img/screen/mesh-node1.jpg b/static/img/screen/mesh-node1.jpg similarity index 100% rename from website/static/img/screen/mesh-node1.jpg rename to static/img/screen/mesh-node1.jpg diff --git a/website/static/img/screen/mesh-node2.jpg b/static/img/screen/mesh-node2.jpg similarity index 100% rename from website/static/img/screen/mesh-node2.jpg rename to static/img/screen/mesh-node2.jpg diff --git a/website/static/img/screen/mesh-splash.jpg b/static/img/screen/mesh-splash.jpg similarity index 100% rename from website/static/img/screen/mesh-splash.jpg rename to static/img/screen/mesh-splash.jpg diff --git a/website/static/img/screen/mesh-wifi.jpg b/static/img/screen/mesh-wifi.jpg similarity index 100% rename from website/static/img/screen/mesh-wifi.jpg rename to static/img/screen/mesh-wifi.jpg diff --git a/website/static/img/software.svg b/static/img/software.svg similarity index 100% rename from website/static/img/software.svg rename to static/img/software.svg diff --git a/website/static/img/undraw_docusaurus_mountain.svg b/static/img/undraw_docusaurus_mountain.svg similarity index 100% rename from website/static/img/undraw_docusaurus_mountain.svg rename to static/img/undraw_docusaurus_mountain.svg diff --git a/website/static/img/undraw_docusaurus_react.svg b/static/img/undraw_docusaurus_react.svg similarity index 100% rename from website/static/img/undraw_docusaurus_react.svg rename to static/img/undraw_docusaurus_react.svg diff --git a/website/static/img/undraw_docusaurus_tree.svg b/static/img/undraw_docusaurus_tree.svg similarity index 100% rename from website/static/img/undraw_docusaurus_tree.svg rename to static/img/undraw_docusaurus_tree.svg diff --git a/website/static/img/versatility.svg b/static/img/versatility.svg similarity index 100% rename from website/static/img/versatility.svg rename to static/img/versatility.svg diff --git a/website/tsconfig.json b/tsconfig.json similarity index 100% rename from website/tsconfig.json rename to tsconfig.json diff --git a/website/README.md b/website/README.md deleted file mode 100644 index 876be4f5..00000000 --- a/website/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# Website - -This website is built using [Docusaurus 2](https://v2.docusaurus.io/), a modern static website generator. - -## Installation - -```console -yarn install -``` - -## Local Development - -```console -yarn start -``` - -This command starts a local development server and open up a browser window. Most changes are reflected live without having to restart the server. - -## Build - -```console -yarn build -``` - -This command generates static content into the `build` directory and can be served using any static contents hosting service. - -[![Powered by Vercel](https://raw.githubusercontent.com/abumalick/powered-by-vercel/master/powered-by-vercel.svg)](https://vercel.com?utm_source=meshtastic&utm_campaign=oss) diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 8158e848..5102a3f9 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -120,8 +120,7 @@ const config = { { docs: { sidebarPath: require.resolve("./sidebars.js"), - editUrl: - "https://github.com/meshtastic/meshtastic/edit/master/website/", + editUrl: "https://github.com/meshtastic/meshtastic/edit/master/", }, theme: { customCss: require.resolve("./src/css/custom.css"), diff --git a/website/static/img/meshtastic-design b/website/static/img/meshtastic-design deleted file mode 160000 index d0339f02..00000000 --- a/website/static/img/meshtastic-design +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d0339f0297c629f1bd6873b4abccfecb98443538 diff --git a/website/yarn.lock b/yarn.lock similarity index 100% rename from website/yarn.lock rename to yarn.lock From e4f519fb50f270dabc330c1f461cd034c7c52d97 Mon Sep 17 00:00:00 2001 From: Mike Kinney Date: Tue, 21 Dec 2021 11:25:57 -0800 Subject: [PATCH 06/24] add imports; change interface calls --- docs/software/python/usage.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/software/python/usage.md b/docs/software/python/usage.md index 30b88c0c..2a8a325c 100644 --- a/docs/software/python/usage.md +++ b/docs/software/python/usage.md @@ -16,6 +16,7 @@ Another example using Python 3 code to send a message to the mesh when WiFi is e ```python import time import meshtastic +import meshtastic.tcp_interface from pubsub import pub def onReceive(packet, interface): # called when a packet arrives @@ -27,7 +28,7 @@ def onConnection(interface, topic=pub.AUTO_TOPIC): # called when we (re)connect pub.subscribe(onReceive, "meshtastic.receive") pub.subscribe(onConnection, "meshtastic.connection.established") -interface = meshtastic.TCPInterface(hostname='192.168.68.74') +interface = meshtastic.tcp_interface.TCPInterface(hostname='192.168.68.74') while True: time.sleep(1000) interface.close() @@ -39,7 +40,8 @@ Note: Be sure to change the ip address in the code above to a valid ip address f You can get and update settings like this: ```python import meshtastic -interface = meshtastic.SerialInterface() +import meshtastic.serial_interface +interface = meshtastic.serial_interface.SerialInterface() ourNode = interface.getNode('^local') print(ourNode.radioConfig.preferences) From 988f7c489fd434a60a5c0015625421089d837abb Mon Sep 17 00:00:00 2001 From: Sacha Weatherstone Date: Thu, 23 Dec 2021 01:42:57 +1100 Subject: [PATCH 07/24] New showcase structure + fixes --- .../device/{device.md => firmware.md} | 2 +- docs/software/overview.md | 33 +- package.json | 11 +- prisma/.env.example | 1 - prisma/schema.prisma | 61 --- sidebars.js | 2 +- src/data/hardware/rakWireless.ts | 365 ------------- src/data/networks/_overview.ts | 1 - .../networks/ckwhq3l5a000008kufkw8f3dg.ts | 110 ---- src/hooks/useFilteredNetworks.tsx | 18 +- src/hooks/useSelectedTags.tsx | 3 +- src/pages/firmware/index.tsx | 2 +- src/pages/showcase/_components/Card.tsx | 116 +---- src/pages/showcase/_components/CardTags.tsx | 45 ++ src/pages/showcase/_components/Filters.tsx | 134 ++--- src/pages/showcase/_components/Network.tsx | 65 ++- .../showcase/_components/NetworkSection.tsx | 65 +++ src/pages/showcase/_components/Networks.tsx | 114 ++-- src/pages/showcase/_components/TagSelect.tsx | 15 +- src/utils/apiTypes.ts | 50 ++ src/utils/github.ts | 35 ++ src/utils/map.ts | 13 + src/utils/prisma.ts | 3 - src/utils/showcase.ts | 112 ---- src/utils/swr.ts | 1 + yarn.lock | 493 ++++++------------ 26 files changed, 584 insertions(+), 1286 deletions(-) rename docs/software/device/{device.md => firmware.md} (99%) delete mode 100644 prisma/.env.example delete mode 100644 prisma/schema.prisma delete mode 100644 src/data/hardware/rakWireless.ts delete mode 100644 src/data/networks/_overview.ts delete mode 100644 src/data/networks/ckwhq3l5a000008kufkw8f3dg.ts create mode 100644 src/pages/showcase/_components/CardTags.tsx create mode 100644 src/pages/showcase/_components/NetworkSection.tsx create mode 100644 src/utils/apiTypes.ts create mode 100644 src/utils/map.ts delete mode 100644 src/utils/prisma.ts create mode 100644 src/utils/swr.ts diff --git a/docs/software/device/device.md b/docs/software/device/firmware.md similarity index 99% rename from docs/software/device/device.md rename to docs/software/device/firmware.md index ccb6a66e..68de6109 100644 --- a/docs/software/device/device.md +++ b/docs/software/device/firmware.md @@ -1,5 +1,5 @@ --- -id: device-software +id: device-firmware title: Device firmware sidebar_label: Device firmware --- diff --git a/docs/software/overview.md b/docs/software/overview.md index 6c184421..568e462c 100644 --- a/docs/software/overview.md +++ b/docs/software/overview.md @@ -6,20 +6,21 @@ slug: /software --- The following applications are available to support your Meshtastic network: - * The [firmware](/docs/software/device/device-software) to run on the devices - * Connect to the devices with our [Android app](/docs/software/android/android-installation) - * An [iOS application](/docs/software/ios/ios-development) is in the works - * [Meshtastic.js](/docs/software/js/getting-started) provides a javascript library to interface with devices - * [Meshtastic-python](/docs/software/python/python-installation) provides access from desktop computers including a command line interface - * A [web interface](/docs/software/web/web-app-software) can be accessed over wifi on ESP32 devices - * Pre-installed device plugins for: - * [Range testing](/docs/software/plugins/range-test-plugin) - * [External notifications](/docs/software/plugins/ext-notif-plugin) - * [Serial communication](/docs/software/plugins/serial-plugin) - * [Store and forewarding messages](/docs/software/plugins/store-forward-plugin) (in development) - * [Environment measurement](/docs/software/plugins/environment-plugin) (in development) - * Community projects include: - * A [plugin](/docs/software/community/community-atak) for the [Android Team Awareness Kit (ATAK)](https://play.google.com/store/apps/details?id=com.atakmap.app.civ) - * [PyGUI](/docs/software/community/community-pygui), a platform agnostic graphical user interface for devices -The devices running Meshtastic have a large number of preferences that can be set, see the [Settings](/docs/settings) pages for more details. \ No newline at end of file +- The [firmware](/docs/software/device/device-firmware) to run on the devices +- Connect to the devices with our [Android app](/docs/software/android/android-installation) +- An [iOS application](/docs/software/ios/ios-development) is in the works +- [Meshtastic.js](/docs/software/js/getting-started) provides a javascript library to interface with devices +- [Meshtastic-python](/docs/software/python/python-installation) provides access from desktop computers including a command line interface +- A [web interface](/docs/software/web/web-app-software) can be accessed over wifi on ESP32 devices +- Pre-installed device plugins for: + - [Range testing](/docs/software/plugins/range-test-plugin) + - [External notifications](/docs/software/plugins/ext-notif-plugin) + - [Serial communication](/docs/software/plugins/serial-plugin) + - [Store and forewarding messages](/docs/software/plugins/store-forward-plugin) (in development) + - [Environment measurement](/docs/software/plugins/environment-plugin) (in development) +- Community projects include: + - A [plugin](/docs/software/community/community-atak) for the [Android Team Awareness Kit (ATAK)](https://play.google.com/store/apps/details?id=com.atakmap.app.civ) + - [PyGUI](/docs/software/community/community-pygui), a platform agnostic graphical user interface for devices + +The devices running Meshtastic have a large number of preferences that can be set, see the [Settings](/docs/settings) pages for more details. diff --git a/package.json b/package.json index 57de4840..0a30b9be 100644 --- a/package.json +++ b/package.json @@ -12,14 +12,11 @@ }, "dependencies": { "@algolia/client-search": "^4.11.0", - "@docusaurus/core": "^2.0.0-beta.13", - "@docusaurus/plugin-ideal-image": "^2.0.0-beta.13", - "@docusaurus/preset-classic": "^2.0.0-beta.13", + "@docusaurus/core": "^2.0.0-beta.14", + "@docusaurus/plugin-ideal-image": "^2.0.0-beta.14", + "@docusaurus/preset-classic": "^2.0.0-beta.14", "@mdx-js/react": "^1.6.22", - "@prisma/client": "^3.6.0", - "@supabase/supabase-js": "^1.28.6", "esp-web-flasher": "^4.0.0", - "prisma": "^3.6.0", "react": "^17.0.2", "react-dom": "^17.0.2", "react-icons": "^4.3.1", @@ -40,7 +37,7 @@ ] }, "devDependencies": { - "@docusaurus/module-type-aliases": "^2.0.0-beta.13", + "@docusaurus/module-type-aliases": "^2.0.0-beta.14", "@tsconfig/docusaurus": "^1.0.4", "@types/node": "^17.0.2", "@types/w3c-web-serial": "^1.0.2", diff --git a/prisma/.env.example b/prisma/.env.example deleted file mode 100644 index a8dd343b..00000000 --- a/prisma/.env.example +++ /dev/null @@ -1 +0,0 @@ -DATABASE_URL=postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=SCHEMA \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma deleted file mode 100644 index 78d86c95..00000000 --- a/prisma/schema.prisma +++ /dev/null @@ -1,61 +0,0 @@ -datasource db { - url = env("DATABASE_URL") - provider = "postgresql" -} - -generator client { - provider = "prisma-client-js" -} - -model Author { - id String @id @default(cuid()) - githubUsername String - bio String - - showcase Showcase[] -} - -model Showcase { - id String @id @default(cuid()) - title String - body String - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - tags ShowcaseTag[] - nodes Node[] - materials Material[] - author Author @relation(fields: [authorId], references: [id]) - authorId String -} - -model Material { - id String @id @default(cuid()) - name String - details String - image String - url String - - showcases Showcase[] -} - -model Node { - id String @id @default(cuid()) - latitude String - longitude String - - showcase Showcase @relation(fields: [showcaseId], references: [id]) - showcaseId String - -} - -model ShowcaseTag { - id String @id @default(cuid()) - label String - description String - color String - - showcase Showcase @relation(fields: [showcaseId], references: [id]) - showcaseId String - -} diff --git a/sidebars.js b/sidebars.js index 882c8328..ee6e155f 100644 --- a/sidebars.js +++ b/sidebars.js @@ -15,7 +15,7 @@ module.exports = { "software/overview", { "Meshtastic device": [ - "software/device/device-software", + "software/device/device-firmware", "software/device/device-channels", "software/device/device-remote-admin", "software/device/remote-hardware-service", diff --git a/src/data/hardware/rakWireless.ts b/src/data/hardware/rakWireless.ts deleted file mode 100644 index 105ca363..00000000 --- a/src/data/hardware/rakWireless.ts +++ /dev/null @@ -1,365 +0,0 @@ -export const rakWireless = { - /** - * Base modules - */ - RAK19003: { - name: "RAK19003", - details: "WisBlock Mini Base Board", - image: "/img/hardware/rak/RAK19003.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK19003/Overview/", - }, - RAK5005_O: { - name: "RAK5005-O", - details: "WisBlock Base Board", - image: "/img/hardware/rak/RAK5005-O.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK5005-O/Overview/", - }, - - /** - * Core modules - */ - RAK11200: { - name: "RAK11200", - details: "WisBlock WiFi Module", - image: "/img/hardware/rak/RAK11200.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11200/Overview/", - }, - RAK11310: { - name: "RAK11310", - details: "WisBlock LPWAN Module", - image: "/img/hardware/rak/RAK11310.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK11310/Overview/", - }, - RAK4631: { - name: "RAK4631", - details: "WisBlock LPWAN Module", - image: "/img/hardware/rak/RAK4631.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK4631/Overview/", - }, - - /** - * Wireless modules - */ - RAK13101: { - name: "RAK13101", - details: "WisBlock GSM/GPRS Module", - image: "/img/hardware/rak/RAK13101.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK13101/Overview/", - }, - RAK2305: { - name: "RAK2305", - details: "WisBlock WiFi Interface Module", - image: "/img/hardware/rak/RAK2305.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK2305/Overview/", - }, - RAK5860: { - name: "RAK5860", - details: "WisBlock NB-IoT Interface Module", - image: "/img/hardware/rak/RAK5860.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK5860/Overview/", - }, - - /** - * Sensor modules - */ - RAK12003: { - name: "RAK12003", - details: "WisBlock Infrared Temperature Sensor", - image: "/img/hardware/rak/RAK12003.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK12003/Overview/", - }, - RAK12004: { - name: "RAK12004", - details: "WisBlock MQ2 Gas Sensor Module", - image: "/img/hardware/rak/RAK12004.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK12004/Overview/", - }, - RAK12005: { - name: "RAK12005", - details: "WisBlock Rain Sensor Module", - image: "/img/hardware/rak/RAK12005.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK12005/Overview/", - }, - RAK12006: { - name: "RAK12006", - details: "WisBlock PIR Module", - image: "/img/hardware/rak/RAK12006.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK12006/Overview/", - }, - RAK12007: { - name: "RAK12007", - details: "WisBlock Ultrasonic Module", - image: "/img/hardware/rak/RAK12007.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK12007/Overview/", - }, - RAK12009: { - name: "RAK12009", - details: "WisBlock MQ3 Alcohol Gas Sensor Module", - image: "/img/hardware/rak/RAK12009.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK12009/Overview/", - }, - RAK12010: { - name: "RAK12010", - details: "WisBlock Ambient Light Sensor Module", - image: "/img/hardware/rak/RAK12010.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK12010/Overview/", - }, - RAK12011: { - name: "RAK12011", - details: "WisBlock Barometer WT Sensor Module", - image: "/img/hardware/rak/RAK12011.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK12011/Overview/", - }, - RAK12012: { - name: "RAK12012", - details: "WisBlock Heart Rate Module", - image: "/img/hardware/rak/RAK12012.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK12012/Overview/", - }, - RAK12015: { - name: "RAK12015", - details: "WisBlock Vibration Detection Module", - image: "/img/hardware/rak/RAK12015.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK12015/Overview/", - }, - RAK12500: { - name: "RAK12500", - details: "WisBlock GNSS Location Module", - image: "/img/hardware/rak/RAK12500.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK12500/Overview/", - }, - RAK16000: { - name: "RAK16000", - details: "WisBlock DC Current Module", - image: "/img/hardware/rak/RAK16000.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK16000/Overview/", - }, - RAK18000: { - name: "RAK18000", - details: "WisBlock PDM Stereo Microphone Module", - image: "/img/hardware/rak/RAK18000.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK18000/Overview/", - }, - RAK1901: { - name: "RAK1901", - details: "WisBlock Temperature and Humidity Sensor", - image: "/img/hardware/rak/RAK1901.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK1901/Overview/", - }, - RAK1902: { - name: "RAK1902", - details: "WisBlock Barometer Pressure Sensor", - image: "/img/hardware/rak/RAK1902.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK1902/Overview/", - }, - RAK1903: { - name: "RAK1903", - details: "WisBlock Ambient Light Sensor", - image: "/img/hardware/rak/RAK1903.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK1903/Overview/", - }, - RAK1904: { - name: "RAK1904", - details: "WisBlock 3-axis Acceleration Sensor", - image: "/img/hardware/rak/RAK1904.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK1904/Overview/", - }, - RAK1906: { - name: "RAK1906", - details: "WisBlock Environmental Sensor", - image: "/img/hardware/rak/RAK1906.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK1906/Overview/", - }, - RAK1910: { - name: "RAK1910", - details: "WisBlock GNSS Location Module", - image: "/img/hardware/rak/RAK1910.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK1910/Overview/", - }, - - /** - * Interface modules - */ - RAK13001: { - name: "RAK13001", - details: "WisBlock Relay IO Module", - image: "/img/hardware/rak/RAK13001.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK13001/Overview/", - }, - RAK13002: { - name: "RAK13002", - details: "WisBlock IO Module", - image: "/img/hardware/rak/RAK13002.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK13002/Overview/", - }, - RAK13003: { - name: "RAK13003", - details: "WisBlock IO Expansion Module", - image: "/img/hardware/rak/RAK13003.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK13003/Overview/", - }, - RAK13004: { - name: "RAK13004", - details: "WisBlock PWM Expander Module", - image: "/img/hardware/rak/RAK13004.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK13004/Overview/", - }, - RAK13005: { - name: "RAK13005", - details: "WisBlock LIN Module", - image: "/img/hardware/rak/RAK13005.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK13005/Overview/", - }, - RAK14002: { - name: "RAK14002", - details: "WisBlock Touch Sensor Module", - image: "/img/hardware/rak/RAK14002.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK14002/Overview/", - }, - RAK16001: { - name: "RAK16001", - details: "WisBlock ADC Module", - image: "/img/hardware/rak/RAK16001.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK16001/Overview/", - }, - RAK1920: { - name: "RAK1920", - details: "WisBlock Sensor Adapter Module", - image: "/img/hardware/rak/RAK1920.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK1920/Overview/", - }, - RAK5801: { - name: "RAK5801", - details: "WisBlock 4-20mA Interface Module", - image: "/img/hardware/rak/RAK5801.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK5801/Overview/", - }, - RAK5802: { - name: "RAK5802", - details: "WisBlock RS485 Interface Module", - image: "/img/hardware/rak/RAK5802.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK5802/Overview/", - }, - RAK5804: { - name: "RAK5804", - details: "WisBlock Interface Extension Module", - image: "/img/hardware/rak/RAK5804.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK5804/Overview/", - }, - RAK5811: { - name: "RAK5811", - details: "WisBlock 0-5V Interface Module", - image: "/img/hardware/rak/RAK5811.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK5811/Overview/", - }, - - /** - * Display Modules - */ - RAK14000: { - name: "RAK14000", - details: "WisBlock E-Ink Display", - image: "/img/hardware/rak/RAK14000.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK14000/Overview/", - }, - RAK14001: { - name: "RAK14001", - details: "WisBlock RGB LED Module", - image: "/img/hardware/rak/RAK14001.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK14001/Overview/", - }, - RAK14003: { - name: "RAK14003", - details: "WisBlock LED Bar Graph Module", - image: "/img/hardware/rak/RAK14003.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK14003/Overview/", - }, - RAK1921: { - name: "RAK1921", - details: "WisBlock OLED Display", - image: "/img/hardware/rak/RAK1921.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK1921/Overview/", - }, - - /** - * Extra modules - */ - RAK12002: { - name: "RAK12002", - details: "WisBlock RTC Module", - image: "/img/hardware/rak/RAK12002.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK12002/Overview/", - }, - RAK18001: { - name: "RAK18001", - details: "WisBlock Buzzer Module", - image: "/img/hardware/rak/RAK18001.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK18001/Overview/", - }, - RAK19005: { - name: "RAK19005", - details: "WisBlock Sensor Extension Cable", - image: "/img/hardware/rak/RAK19005.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK19005/Overview/", - }, - RAK19008: { - name: "RAK19008", - details: "WisBlock IO Extension Cable", - image: "/img/hardware/rak/RAK19008.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK19008/Overview/", - }, - - /** - * Storage modules - */ - RAK15000: { - name: "RAK15000", - details: "WisBlock EEPROM Module", - image: "/img/hardware/rak/RAK15000.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK15000/Overview/", - }, - RAK15001: { - name: "RAK15001", - details: "WisBlock Flash Module", - image: "/img/hardware/rak/RAK15001.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK15001/Overview/", - }, - RAK15002: { - name: "RAK15002", - details: "WisBlock Micro SD Card Module", - image: "/img/hardware/rak/RAK15002.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK15002/Overview/", - }, - - /** - * Power modules - */ - RAK19002: { - name: "RAK19002", - details: "WisBlock Boost Module", - image: "/img/hardware/rak/RAK19002.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK19002/Overview/", - }, - RAK19004: { - name: "RAK19004", - details: "WisBlock Green Power Module", - image: "/img/hardware/rak/RAK19004.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK19004/Overview/", - }, - RAK19006: { - name: "RAK19006", - details: "WisBlock Wireless Charge Module", - image: "/img/hardware/rak/RAK19006.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK19006/Overview/", - }, - - /** - * Motor modules - */ - RAK17000: { - name: "RAK17000", - details: "WisBlock Motor Control Module", - image: "/img/hardware/rak/RAK17000.png", - url: "https://docs.rakwireless.com/Product-Categories/WisBlock/RAK17000/Overview/", - }, -}; diff --git a/src/data/networks/_overview.ts b/src/data/networks/_overview.ts deleted file mode 100644 index 97661b73..00000000 --- a/src/data/networks/_overview.ts +++ /dev/null @@ -1 +0,0 @@ -export const writeups: string[] = ["ckwhq3l5a000008kufkw8f3dg"]; diff --git a/src/data/networks/ckwhq3l5a000008kufkw8f3dg.ts b/src/data/networks/ckwhq3l5a000008kufkw8f3dg.ts deleted file mode 100644 index 251b1158..00000000 --- a/src/data/networks/ckwhq3l5a000008kufkw8f3dg.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { NetworkWriteup, ShowcaseNetwork } from '../../utils/showcase'; -import { rakWireless } from '../hardware/rakWireless'; - -export const metadata: ShowcaseNetwork = { - id: "ckwhq3l5a000008kufkw8f3dg", - title: "Network 1", - description: - "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eget dui mollis.", - nodes: [ - { - latitude: -37.656719, - longitude: 145.632219, - }, - { - latitude: -37.633466, - longitude: 145.692371, - }, - { - latitude: -37.559148, - longitude: 145.735771, - }, - ], - tags: ["community", "largeNetwork"], -}; - -export const writeup: NetworkWriteup = { - summary: "This is the article summary.", - body: [ - { - heading: "This is the first heading.", - body: "This is the first body segment.", - }, - { - heading: "This is the second heading.", - body: "This is the second body segment.", - }, - { - heading: "This is the second heading.", - body: "This is the second body segment.", - }, - ], - bom: [ - { - name: "This is the first material name.", - details: "This is the first material details.", - image: "https://example.com/image.png", - url: "https://example.com/material", - }, - rakWireless.RAK19003, - rakWireless.RAK5005_O, - rakWireless.RAK11200, - rakWireless.RAK11310, - rakWireless.RAK4631, - rakWireless.RAK13101, - rakWireless.RAK2305, - rakWireless.RAK5860, - rakWireless.RAK12003, - rakWireless.RAK12004, - rakWireless.RAK12005, - rakWireless.RAK12006, - rakWireless.RAK12007, - rakWireless.RAK12009, - rakWireless.RAK12010, - rakWireless.RAK12011, - rakWireless.RAK12012, - rakWireless.RAK12015, - rakWireless.RAK12500, - rakWireless.RAK16000, - rakWireless.RAK18000, - rakWireless.RAK1901, - rakWireless.RAK1902, - rakWireless.RAK1903, - rakWireless.RAK1904, - rakWireless.RAK1906, - rakWireless.RAK1910, - rakWireless.RAK13001, - rakWireless.RAK13002, - rakWireless.RAK13003, - rakWireless.RAK13004, - rakWireless.RAK13005, - rakWireless.RAK14002, - rakWireless.RAK16001, - rakWireless.RAK1920, - rakWireless.RAK5801, - rakWireless.RAK5802, - rakWireless.RAK5804, - rakWireless.RAK5811, - rakWireless.RAK14000, - rakWireless.RAK14001, - rakWireless.RAK14003, - rakWireless.RAK1921, - rakWireless.RAK12002, - rakWireless.RAK18001, - rakWireless.RAK19005, - rakWireless.RAK19008, - rakWireless.RAK15000, - rakWireless.RAK15001, - rakWireless.RAK15002, - rakWireless.RAK19002, - rakWireless.RAK19004, - rakWireless.RAK19006, - rakWireless.RAK17000, - ], - author: { - name: "Author Name", - about: "This is the author's about text.", - avatarUrl: "https://avatars0.githubusercontent.com/u/1234?s=460&v=4", - url: "", - }, -}; diff --git a/src/hooks/useFilteredNetworks.tsx b/src/hooks/useFilteredNetworks.tsx index 85753df0..a726d3e0 100644 --- a/src/hooks/useFilteredNetworks.tsx +++ b/src/hooks/useFilteredNetworks.tsx @@ -1,27 +1,29 @@ import React from 'react'; -import { ShowcaseNetwork, sortedNetworks, TagType } from '../utils/showcase'; +import { Showcase } from '../utils/apiTypes.js'; import { useSelectedTags } from './useSelectedTags'; -const filterNetworks = async ( - showcaseNetworks: Promise, - selectedTags: TagType[] +const filterNetworks = ( + showcaseNetworks: Showcase[], + selectedTags: string[] ) => { if (selectedTags.length === 0) { return showcaseNetworks; } - return (await showcaseNetworks).filter((showcaseNetwork) => { + return showcaseNetworks.filter((showcaseNetwork) => { if (showcaseNetwork.tags.length === 0) { return false; } - return selectedTags.every((tag) => showcaseNetwork.tags.includes(tag)); + return selectedTags.every((queryTag) => + showcaseNetwork.tags.find((searchTag) => searchTag.label === queryTag) + ); }); }; -export const useFilteredNetworks = () => { +export const useFilteredNetworks = (networks: Showcase[]) => { const selectedTags = useSelectedTags(); return React.useMemo( - () => filterNetworks(sortedNetworks, selectedTags), + () => filterNetworks(networks, selectedTags), [selectedTags] ); }; diff --git a/src/hooks/useSelectedTags.tsx b/src/hooks/useSelectedTags.tsx index f1e13896..3bd62d97 100644 --- a/src/hooks/useSelectedTags.tsx +++ b/src/hooks/useSelectedTags.tsx @@ -3,11 +3,10 @@ import React from 'react'; import { useLocation } from '@docusaurus/router'; import { readSearchTags } from '../pages/showcase/_components/TagSelect'; -import { TagType } from '../utils/showcase'; export const useSelectedTags = () => { const location = useLocation(); - const [selectedTags, setSelectedTags] = React.useState([]); + const [selectedTags, setSelectedTags] = React.useState([]); React.useEffect(() => { const tags = readSearchTags(location.search); setSelectedTags(tags); diff --git a/src/pages/firmware/index.tsx b/src/pages/firmware/index.tsx index 651ecf7f..9788ab31 100644 --- a/src/pages/firmware/index.tsx +++ b/src/pages/firmware/index.tsx @@ -6,10 +6,10 @@ import useSWR from 'swr'; import Layout from '@theme/Layout'; import { Release } from '../../utils/github'; +import { fetcher } from '../../utils/swr'; import { FirmwareCard } from './_components/FirmwareCard'; const Firmware = (): JSX.Element => { - const fetcher = (url: string) => fetch(url).then((res) => res.json()); const { data, error } = useSWR( "https://api.github.com/repos/meshtastic/meshtastic-device/releases", fetcher diff --git a/src/pages/showcase/_components/Card.tsx b/src/pages/showcase/_components/Card.tsx index 4692ee03..27c71237 100644 --- a/src/pages/showcase/_components/Card.tsx +++ b/src/pages/showcase/_components/Card.tsx @@ -2,98 +2,32 @@ import React from 'react'; import Image from '@theme/IdealImage'; -import { - Node, - ShowcaseNetwork, - sortBy, - Tag, - TagList, - Tags, - TagType, -} from '../../../utils/showcase'; +import { Showcase } from '../../../utils/apiTypes'; +import { mapUrl } from '../../../utils/map'; +import { CardTags } from './CardTags'; -interface Props extends Tag { - id: string; +export interface CardProps { + network: Showcase; } -const mapUrl = (nodes: Node[]): string => { - const width = 900; - const height = 400; - const access_token = - "pk.eyJ1Ijoic2FjaGF3IiwiYSI6ImNrNW9meXozZjBsdW0zbHBjM2FnNnV6cmsifQ.3E4n8eFGD9ZOFo-XDVeZnQ"; - const nodeCoords = nodes.map( - ({ latitude, longitude }) => `pin-l+67ea94(${longitude},${latitude})` - ); - - return `https://api.mapbox.com/styles/v1/mapbox/satellite-v9/static/${nodeCoords}/auto/${width}x${height}@2x?access_token=${access_token}`; -}; - -const CardTags = ({ tags }: { tags: TagType[] }) => { - const tagObjects = tags.map((tag) => ({ tag, ...Tags[tag] })); - const tagObjectsSorted = sortBy(tagObjects, (tagObject) => - TagList.indexOf(tagObject.tag) - ); - - return ( -

    - {tagObjectsSorted.map(({ color, description, label }, index) => { - return ( -
  • - {label.toLowerCase()} - -
  • - ); - })} -
- ); -}; - -export const Card = React.memo( - ({ showcaseNetwork }: { showcaseNetwork: ShowcaseNetwork }) => ( -
-
- {showcaseNetwork.title} -
-
-

{showcaseNetwork.title}

- {showcaseNetwork.description} -
- +export const Card = React.memo(({ network }: CardProps) => ( +
+
+ {network.title}
- ) -); +
+

{network.title}

+ {network.summary} +
+ +
+)); diff --git a/src/pages/showcase/_components/CardTags.tsx b/src/pages/showcase/_components/CardTags.tsx new file mode 100644 index 00000000..581c7c3b --- /dev/null +++ b/src/pages/showcase/_components/CardTags.tsx @@ -0,0 +1,45 @@ +import React from 'react'; + +import { ShowcaseTag } from '../../../utils/apiTypes'; + +export interface CardTagsProps { + tags: ShowcaseTag[]; +} + +export const CardTags = ({ tags }: CardTagsProps) => { + return ( +
    + {tags.map(({ color, description, label }, index) => { + return ( +
  • + {label.toLowerCase()} + +
  • + ); + })} +
+ ); +}; diff --git a/src/pages/showcase/_components/Filters.tsx b/src/pages/showcase/_components/Filters.tsx index 5525dc45..cad38051 100644 --- a/src/pages/showcase/_components/Filters.tsx +++ b/src/pages/showcase/_components/Filters.tsx @@ -1,74 +1,86 @@ import React from 'react'; import { FiHeart } from 'react-icons/fi'; +import useSWR from 'swr'; -import { TagList, Tags } from '../../../utils/showcase'; +import { fetcher } from '@site/src/utils/swr'; + +import { ShowcaseTag } from '../../../utils/apiTypes'; +// import { TagList, Tags } from '../../../utils/showcase'; import { TagSelect } from './TagSelect'; export const Filters = (): JSX.Element => { + const { data, error } = useSWR( + "http://localhost:4000/showcase/tags", + fetcher + ); return (
-
    - {TagList.map((tag, i) => { - const { label, description, color } = Tags[tag]; - const id = `showcase_checkbox_id_${tag};`; + {data && !error ? ( +
      + {data.map((tag, i) => { + const { label, description, color } = tag; + const id = `showcase_checkbox_id_${tag};`; - return ( -
      - - - - ) : ( - - ) - } - /> -
      - ); - })} -
    + return ( +
    + + + + ) : ( + + ) + } + /> +
    + ); + })} +
+ ) : ( +

Loading...

+ )}
); }; diff --git a/src/pages/showcase/_components/Network.tsx b/src/pages/showcase/_components/Network.tsx index 2496745c..9344b7e7 100644 --- a/src/pages/showcase/_components/Network.tsx +++ b/src/pages/showcase/_components/Network.tsx @@ -1,49 +1,44 @@ import React from 'react'; -// import { networks } from '../../../data/networks/_overview'; -import { NetworkWriteup, ShowcaseNetwork } from '../../../utils/showcase'; +import useSWR from 'swr'; + +import { Showcase } from '@site/src/utils/apiTypes'; +import { User } from '@site/src/utils/github'; +import { fetcher } from '@site/src/utils/swr'; interface NetworkProps { id: string; } export const Network = ({ id }: NetworkProps): JSX.Element => { - import(`../../../data/networks/${id}`).then((data) => { - setNetworkWriteup(data.writeup as NetworkWriteup); - setMetadata(data.metadata as ShowcaseNetwork); - }); + const { data, error } = useSWR( + `http://localhost:4000/showcase/${id}`, + fetcher + ); - // console.log(data); - const [networkWriteup, setNetworkWriteup] = React.useState(); - const [metadata, setMetadata] = React.useState(); - React.useEffect(() => { - // data.then((data) => setNetworkWriteup(data)); - }, []); + const githubData = useSWR( + `https://api.github.com/users/${data?.author?.githubUsername}`, + fetcher + ).data; - // const network = networks.find((network) => network.id === id); - - return metadata && networkWriteup ? ( + return data && !error ? (
-

{metadata.title}

-

{metadata.description}

-
- {networkWriteup.author.name} -
-
{networkWriteup.author.name}
-
{networkWriteup.author.about}
+

{data.title}

+

{data.summary}

+ {githubData && ( +
+ {githubData.name} +
+
{githubData.name}
+
{githubData.bio}
+
-
- - {networkWriteup.body.map((segment, index) => ( -
-

{segment.heading}

-

{segment.body}

-
- ))} + )} +
{data.body}
{

Bill of Materials

- {networkWriteup.bom.map((material, index) => ( + {data.materials?.map((material, index) => (
{ + return ( +
+
+

{title}

+ {icon && ( + + {icon} + + )} +
+
    + {networks ? ( + <> + {networks.map((network) => ( + + ))} + {networks.length === 0 &&

    No result

    } + + ) : ( +
    Loading...
    + )} +
+
+ ); +}; diff --git a/src/pages/showcase/_components/Networks.tsx b/src/pages/showcase/_components/Networks.tsx index 02d1bd10..3750b01a 100644 --- a/src/pages/showcase/_components/Networks.tsx +++ b/src/pages/showcase/_components/Networks.tsx @@ -1,99 +1,49 @@ import React from 'react'; import { FiHeart, FiSearch } from 'react-icons/fi'; +import useSWR from 'swr'; + +import { useSelectedTags } from '@site/src/hooks/useSelectedTags'; import { useFilteredNetworks } from '../../../hooks/useFilteredNetworks'; -import { useSelectedTags } from '../../../hooks/useSelectedTags'; -import { ShowcaseNetwork, sortedNetworks } from '../../../utils/showcase'; -import { Card } from './Card'; - -interface NetworkSectionProps { - title: string; - icon?: JSX.Element; - iconColor?: string; - networks: ShowcaseNetwork[]; -} - -const NetworkSection = ({ - title, - icon, - iconColor, - networks, -}: NetworkSectionProps): JSX.Element => { - return ( -
-
-

{title}

- {icon && ( - - {icon} - - )} -
-
    - {networks.map((network) => ( - - ))} - {networks.length === 0 &&

    No result

    } -
-
- ); -}; +import { Showcase } from '../../../utils/apiTypes'; +import { fetcher } from '../../../utils/swr'; +import { NetworkSection } from './NetworkSection'; export const Networks = (): JSX.Element => { - const [sorted, setSorted] = React.useState([]); - const [other, setOther] = React.useState([]); - - sortedNetworks.then((networks) => { - setSorted(networks.filter((network) => network.tags.includes("favorite"))); - }); - sortedNetworks.then((networks) => { - setOther(networks.filter((network) => !network.tags.includes("favorite"))); - }); - + const { data, error } = useSWR( + "http://localhost:4000/showcase", + fetcher + ); const selectedTags = useSelectedTags(); - const filteredNetworks = useFilteredNetworks(); + const filteredNetworks = useFilteredNetworks(data ?? []); return (
- {selectedTags.length === 0 ? ( - <> + {data && !error ? ( + selectedTags.length === 0 ? ( + <> + } + iconColor="rgb(190 24 93)" + networks={data.filter((network) => + network.tags.find((tag) => tag.label === "Favourite") + )} + /> + + + ) : ( } - iconColor="rgb(190 24 93)" - networks={sorted} + title="Results" + icon={} + networks={filteredNetworks} /> - - + ) + ) : error ? ( +
{error}
) : ( - } - networks={filteredNetworks} - /> +
Loading...
)}
); diff --git a/src/pages/showcase/_components/TagSelect.tsx b/src/pages/showcase/_components/TagSelect.tsx index 4584f668..273d52fd 100644 --- a/src/pages/showcase/_components/TagSelect.tsx +++ b/src/pages/showcase/_components/TagSelect.tsx @@ -3,20 +3,21 @@ import 'url-search-params-polyfill'; import React from 'react'; import { useHistory, useLocation } from '@docusaurus/router'; +import { ShowcaseTag } from '@site/src/utils/apiTypes'; -import { TagType, toggleListItem } from '../../../utils/showcase'; +import { toggleListItem } from '../../../utils/showcase'; interface Props extends React.ComponentProps<"input"> { icon: React.ReactElement>; label: React.ReactNode; - tag: TagType; + tag: ShowcaseTag; } -export function readSearchTags(search: string): TagType[] { - return new URLSearchParams(search).getAll("tags") as TagType[]; +export function readSearchTags(search: string): string[] { + return new URLSearchParams(search).getAll("tags") as string[]; } -function replaceSearchTags(search: string, newTags: TagType[]) { +function replaceSearchTags(search: string, newTags: string[]) { const searchParams = new URLSearchParams(search); searchParams.delete("tags"); newTags.forEach((tag) => searchParams.append("tags", tag)); @@ -30,11 +31,11 @@ export const TagSelect = React.forwardRef( const [selected, setSelected] = React.useState(false); React.useEffect(() => { const tags = readSearchTags(location.search); - setSelected(tags.includes(tag)); + setSelected(tags.includes(tag.label)); }, [tag, location]); const toggleTag = React.useCallback(() => { const tags = readSearchTags(location.search); - const newTags = toggleListItem(tags, tag); + const newTags = toggleListItem(tags, tag.label); const newSearch = replaceSearchTags(location.search, newTags); history.push({ ...location, search: newSearch }); }, [tag, location, history]); diff --git a/src/utils/apiTypes.ts b/src/utils/apiTypes.ts new file mode 100644 index 00000000..157d2cac --- /dev/null +++ b/src/utils/apiTypes.ts @@ -0,0 +1,50 @@ +export interface Showcase { + id: string; + title: string; + summary: string; + body: string; + createdAt: Date; + updatedAt: Date; + + tags: ShowcaseTag[]; + nodes?: Node[]; + materials?: Material[]; + author?: Author; + authorId?: string; +} + +export interface ShowcaseTag { + id: string; + label: string; + description: string; + color: string; + + showcases?: Showcase[]; +} + +export interface Node { + id: string; + latitude: string; + longitude: string; + + showcase?: Showcase; + showcaseId?: String; +} + +export interface Material { + id: string; + name: string; + details: string; + image: string; + url: string; + + showcases?: Showcase[]; +} + +export interface Author { + id: string; + githubUsername: string; + bio: string; + + showcase?: Showcase[]; +} diff --git a/src/utils/github.ts b/src/utils/github.ts index 253fa4b1..b4cbb6af 100644 --- a/src/utils/github.ts +++ b/src/utils/github.ts @@ -1,3 +1,38 @@ +export interface User { + login: string; + id: number; + node_id: string; + avatar_url: string; + gravatar_id: string; + url: string; + html_url: string; + followers_url: string; + following_url: string; + gists_url: string; + starred_url: string; + subscriptions_url: string; + organizations_url: string; + repos_url: string; + events_url: string; + received_events_url: string; + type: string; + site_admin: boolean; + name: string; + company: string | null; + blog: string; + location: string; + email: string | null; + hireable: string | null; + bio: string | null; + twitter_username: string | null; + public_repos: number; + public_gists: number; + followers: number; + following: number; + created_at: string; + updated_at: string; +} + export interface Author { login: string; id: number; diff --git a/src/utils/map.ts b/src/utils/map.ts new file mode 100644 index 00000000..7d212a88 --- /dev/null +++ b/src/utils/map.ts @@ -0,0 +1,13 @@ +import { Node } from './apiTypes.js'; + +export const mapUrl = (nodes: Node[]): string => { + const width = 900; + const height = 400; + const access_token = + "pk.eyJ1Ijoic2FjaGF3IiwiYSI6ImNrNW9meXozZjBsdW0zbHBjM2FnNnV6cmsifQ.3E4n8eFGD9ZOFo-XDVeZnQ"; + const nodeCoords = nodes.map( + ({ latitude, longitude }) => `pin-l+67ea94(${longitude},${latitude})` + ); + + return `https://api.mapbox.com/styles/v1/mapbox/satellite-v9/static/${nodeCoords}/auto/${width}x${height}@2x?access_token=${access_token}`; +}; diff --git a/src/utils/prisma.ts b/src/utils/prisma.ts deleted file mode 100644 index 9b6c4ce3..00000000 --- a/src/utils/prisma.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { PrismaClient } from '@prisma/client'; - -export const prisma = new PrismaClient(); diff --git a/src/utils/showcase.ts b/src/utils/showcase.ts index da5c2c33..a337f830 100644 --- a/src/utils/showcase.ts +++ b/src/utils/showcase.ts @@ -1,96 +1,3 @@ -import { writeups } from '../data/networks/_overview'; - -export interface Material { - name: string; - details: string; - image?: string; - url?: string; -} - -interface Author { - name: string; - about: string; - url?: string; - avatarUrl?: string; -} - -interface BodySegment { - heading: string; - body: string; -} - -export interface NetworkWriteup { - summary: string; - body: BodySegment[]; - bom: Material[]; - author: Author; -} - -export type Tag = { - label: string; - description: string; - color: string; -}; - -export type TagType = - | "portable" - | "offGrid" - | "largeNetwork" - | "longDistance" - | "community" - | "favorite"; - -export interface Node { - latitude: number; - longitude: number; -} - -export type ShowcaseNetwork = { - id: string; //please get id from https://www.getuniqueid.com/cuid - title: string; - description: string; - nodes: Node[]; - tags: TagType[]; -}; - -export const Tags: Record = { - portable: { - label: "Portable", - description: "Networks that move", - color: "#560bad", - }, - - offGrid: { - label: "Off Grid", - description: "No mains power here", - color: "#2a9d8f", - }, - - largeNetwork: { - label: "Large Network", - description: "Many users or nodes", - color: "#2191bc", - }, - - longDistance: { - label: "Long Distance", - description: "Links over massive distances", - color: "#e9c46a", - }, - - community: { - label: "Community", - description: "General access networks for many users", - color: "#e76f51", - }, - - favorite: { - label: "Favorite", - description: "Our picks for the coolest networks", - color: "#e9669e", - }, -}; - export const sortBy = (array: T[], getter: (item: T) => unknown): T[] => { const sortedArray = [...array]; sortedArray.sort((a, b) => @@ -100,25 +7,6 @@ export const sortBy = (array: T[], getter: (item: T) => unknown): T[] => { return sortedArray; }; -export const TagList = Object.keys(Tags) as TagType[]; - -const sortNetworks = async () => { - const metadataArr: ShowcaseNetwork[] = []; - const writeupsArr: NetworkWriteup[] = []; - writeups.map(async (id) => { - await import(`../data/networks/${id}`).then( - (network: { metadata: ShowcaseNetwork; writeup: NetworkWriteup }) => { - metadataArr.push(network.metadata); - writeupsArr.push(network.writeup); - } - ); - }); - - return metadataArr; -}; - -export const sortedNetworks = sortNetworks(); - export const difference = (...arrays: T[][]): T[] => { return arrays.reduce((a, b) => a.filter((c) => !b.includes(c))); }; diff --git a/src/utils/swr.ts b/src/utils/swr.ts new file mode 100644 index 00000000..50b047c9 --- /dev/null +++ b/src/utils/swr.ts @@ -0,0 +1 @@ +export const fetcher = (url: string) => fetch(url).then((res) => res.json()); diff --git a/yarn.lock b/yarn.lock index 24968935..908481e2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1748,10 +1748,10 @@ "@docsearch/css" "3.0.0-alpha.41" algoliasearch "^4.0.0" -"@docusaurus/core@2.0.0-beta.13", "@docusaurus/core@^2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.13.tgz#3179303e043bf6bd5da6b0141574665f5e66ea98" - integrity sha512-iSU20aIVUDO8m+9koP/sHR1O/6Wvcr/WUMyYwJ47OPq4OkM4L2+opN9mb7UI5ZFXotXZAyMBe1Q6h83FC5xzvA== +"@docusaurus/core@2.0.0-beta.14", "@docusaurus/core@^2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.0.0-beta.14.tgz#9baf8fbfe29f444f985616013b5d80435ea5f29e" + integrity sha512-dW95WbD+WE+35Ee1RYIS1QDcBhvUxUWuDmrWr1X0uH5ZHIeOmOnsGVjjn4FA8VN2MkF0uuWknmRakQmJk0KMZw== dependencies: "@babel/core" "^7.16.0" "@babel/generator" "^7.16.0" @@ -1763,19 +1763,19 @@ "@babel/runtime" "^7.16.3" "@babel/runtime-corejs3" "^7.16.3" "@babel/traverse" "^7.16.3" - "@docusaurus/cssnano-preset" "2.0.0-beta.13" - "@docusaurus/mdx-loader" "2.0.0-beta.13" + "@docusaurus/cssnano-preset" "2.0.0-beta.14" + "@docusaurus/logger" "2.0.0-beta.14" + "@docusaurus/mdx-loader" "2.0.0-beta.14" "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/utils" "2.0.0-beta.13" - "@docusaurus/utils-common" "2.0.0-beta.13" - "@docusaurus/utils-validation" "2.0.0-beta.13" + "@docusaurus/utils" "2.0.0-beta.14" + "@docusaurus/utils-common" "2.0.0-beta.14" + "@docusaurus/utils-validation" "2.0.0-beta.14" "@slorber/static-site-generator-webpack-plugin" "^4.0.0" "@svgr/webpack" "^6.0.0" autoprefixer "^10.3.5" babel-loader "^8.2.2" babel-plugin-dynamic-import-node "2.3.0" boxen "^5.0.1" - chalk "^4.1.2" chokidar "^3.5.2" clean-css "^5.1.5" commander "^5.1.0" @@ -1829,36 +1829,45 @@ webpack-merge "^5.8.0" webpackbar "^5.0.0-3" -"@docusaurus/cssnano-preset@2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.13.tgz#14d20360ca71be62b045b56607632b5221b69963" - integrity sha512-5e6tOtRJ4tFO94TtVNluseOJ7WX0sqCzS2nCUo02DUR4h/xlF/YMLpdt6FKd450L5l2uIrAc08QzX4Nv4y85Kg== +"@docusaurus/cssnano-preset@2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.0.0-beta.14.tgz#99bad713e3b58a89f63c25cec90b83437c3b3f2d" + integrity sha512-O5CebLXrytSQSpa0cgoMIUZ19gnLfCHhHPYqMfKxk0kvgR6g8b5AbsXxaMbgFNAqH690zPRsXmXb39BmXC7fMg== dependencies: cssnano-preset-advanced "^5.1.4" postcss "^8.3.7" postcss-sort-media-queries "^4.1.0" -"@docusaurus/lqip-loader@2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/lqip-loader/-/lqip-loader-2.0.0-beta.13.tgz#e36b902e1d53254d631cdfa60e50de91d8beb119" - integrity sha512-IMai2BwYLdQPStfuA1zqxLxy7yMAeGU1K7C+DkPiEGYnzHxzywAZ/oxln72XRjWBYSw69Oh7AbPriSfbYkFXEQ== +"@docusaurus/logger@2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.0.0-beta.14.tgz#d8c4e5f1c8b39149705587b98ca926549be51064" + integrity sha512-KNK8RgTGArXXlTUGhHUcYLJCI51gTMerSoebNXpTxAOBHFqjwJKv95LqVOy/uotoJZDUeEWR4vS/szGz4g7NaA== + dependencies: + chalk "^4.1.2" + tslib "^2.3.1" + +"@docusaurus/lqip-loader@2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/lqip-loader/-/lqip-loader-2.0.0-beta.14.tgz#4c5e761870caae4deb59147ab66f3b563fbc881c" + integrity sha512-Mz8NjmQ2mt8UR4VsjA5ADBI3RnjPfgVJTA0WBT8dtZFPA14I43UXQcWp0UnZfAedpc0wZqHFMk8gDHMCaNvsmQ== dependencies: file-loader "^6.2.0" lodash "^4.17.20" node-vibrant "^3.1.5" sharp "^0.29.1" + tslib "^2.3.1" -"@docusaurus/mdx-loader@2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.13.tgz#1f5a0e8487355f867d23627015c8a679a14463d0" - integrity sha512-z7Sa3VTybhKhlFyBMap6tyIb5e+FVa28jYXeq6aLe7Xr16YCK9ZqjlM8G6/Gvx68L8ILBlNsCZM2GinIh8t7/Q== +"@docusaurus/mdx-loader@2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.0.0-beta.14.tgz#f4750a02a8d178c843bc50f29f5a92d6cd0692cd" + integrity sha512-lusTVTHc4WbNQY8bDM9zPQWZBIo70SnEyWzCqtznxpV7L3kjSoWEpBCHaYWE/lY2VhvayRsZtrqLwNs3KQgqXw== dependencies: "@babel/parser" "^7.16.4" "@babel/traverse" "^7.16.3" - "@docusaurus/utils" "2.0.0-beta.13" + "@docusaurus/logger" "2.0.0-beta.14" + "@docusaurus/utils" "2.0.0-beta.14" "@mdx-js/mdx" "^1.6.21" "@mdx-js/react" "^1.6.21" - chalk "^4.1.2" escape-html "^1.0.3" file-loader "^6.2.0" fs-extra "^10.0.0" @@ -1871,27 +1880,27 @@ url-loader "^4.1.1" webpack "^5.61.0" -"@docusaurus/module-type-aliases@^2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.13.tgz#45e811739bec9b79dba07af040e574c9cd2cd04a" - integrity sha512-yYHWajhjx0IgMJkbPtoXQzC58em6emGFyl5w5b6OuFxG4qXHZQJp7dRaPQxUMCBvOcHrI9lIw9RYJssIwOcYAg== +"@docusaurus/module-type-aliases@^2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.0.0-beta.14.tgz#8a11f9c4a408d8e8cc4cb59ba81a28ecc629256a" + integrity sha512-jlSwYoRVeNxvmjbVil35mRVSXZdOmEM95Sph7NxC6IE/ceT1a8s4tpzI2xUMsGgSfLBldqhkXe+WSOYqUL7x3w== dependencies: - "@docusaurus/types" "2.0.0-beta.13" + "@docusaurus/types" "2.0.0-beta.14" "@types/react" "*" "@types/react-helmet" "*" "@types/react-router-config" "*" "@types/react-router-dom" "*" -"@docusaurus/plugin-content-blog@2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.13.tgz#57c9b6f71c57dd6895a11b9f541e2e7b95206828" - integrity sha512-J0SesYymavO9pjnuhC28ycSVgzv7Z1fSpq7tfkqLh3uPydq9N2eY7CbyPOysrLBta3/PveldLU+XskiNUs7hCg== +"@docusaurus/plugin-content-blog@2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.0.0-beta.14.tgz#d390ab0ab3aceaeb0be7d49ccde0cf5a2e0b1566" + integrity sha512-MLDRNbQKxwBDsWADyBT/fES7F7xzEEGS8CsdTnm48l7yGSWL8GM3PT6YvjdqHxNxZw3RCRRPUAiJcjZwfOjd8w== dependencies: - "@docusaurus/core" "2.0.0-beta.13" - "@docusaurus/mdx-loader" "2.0.0-beta.13" - "@docusaurus/utils" "2.0.0-beta.13" - "@docusaurus/utils-validation" "2.0.0-beta.13" - chalk "^4.1.2" + "@docusaurus/core" "2.0.0-beta.14" + "@docusaurus/logger" "2.0.0-beta.14" + "@docusaurus/mdx-loader" "2.0.0-beta.14" + "@docusaurus/utils" "2.0.0-beta.14" + "@docusaurus/utils-validation" "2.0.0-beta.14" escape-string-regexp "^4.0.0" feed "^4.2.2" fs-extra "^10.0.0" @@ -1905,16 +1914,16 @@ utility-types "^3.10.0" webpack "^5.61.0" -"@docusaurus/plugin-content-docs@2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.13.tgz#060e344147a05574f34380462a3380b38a24fbbc" - integrity sha512-NaYxr/R+FBaONUFEcFAOfYNA5CRwceRHNFOEIRdJtkJZbWpct5vkKPIojUWUfJbXb2/nV98rPufHyOdVmvAxVA== +"@docusaurus/plugin-content-docs@2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.0.0-beta.14.tgz#533ba6ba471b45ba7a7867207b251f281a6bed1e" + integrity sha512-pjAhfFevIkVl/t+6x9RVsE+6c+VN8Ru1uImTgXk5uVkp6yS1AxW7neEngsczZ1gSiENfTiYyhgWmTXK/uy03kw== dependencies: - "@docusaurus/core" "2.0.0-beta.13" - "@docusaurus/mdx-loader" "2.0.0-beta.13" - "@docusaurus/utils" "2.0.0-beta.13" - "@docusaurus/utils-validation" "2.0.0-beta.13" - chalk "^4.1.2" + "@docusaurus/core" "2.0.0-beta.14" + "@docusaurus/logger" "2.0.0-beta.14" + "@docusaurus/mdx-loader" "2.0.0-beta.14" + "@docusaurus/utils" "2.0.0-beta.14" + "@docusaurus/utils-validation" "2.0.0-beta.14" combine-promises "^1.1.0" escape-string-regexp "^4.0.0" fs-extra "^10.0.0" @@ -1929,54 +1938,56 @@ utility-types "^3.10.0" webpack "^5.61.0" -"@docusaurus/plugin-content-pages@2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.13.tgz#8a892a6d8064d7f007d684cf4e3a8d5614060027" - integrity sha512-gUG69seyivxM0/vQ0SDeynEx9un6IMauMD8J8CWHikTF/axnV27aadjEmmBP8cEvpvXfy3k1zAcGV+BcMUGKbw== +"@docusaurus/plugin-content-pages@2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.0.0-beta.14.tgz#7f176d585994339cbe5c65332ed321eec82f53e3" + integrity sha512-gGcMPG4e+K57cbBPf7IfV5lFCBdraXcpJeDqXlD8ArTeZrAe8Lx3SGz2lco25DgdRGqjMivab3BoT6Hkmo7vVA== dependencies: - "@docusaurus/core" "2.0.0-beta.13" - "@docusaurus/mdx-loader" "2.0.0-beta.13" - "@docusaurus/utils" "2.0.0-beta.13" - "@docusaurus/utils-validation" "2.0.0-beta.13" + "@docusaurus/core" "2.0.0-beta.14" + "@docusaurus/mdx-loader" "2.0.0-beta.14" + "@docusaurus/utils" "2.0.0-beta.14" + "@docusaurus/utils-validation" "2.0.0-beta.14" globby "^11.0.2" remark-admonitions "^1.2.1" tslib "^2.3.1" webpack "^5.61.0" -"@docusaurus/plugin-debug@2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.13.tgz#3313e34b46aaee3ca15c1cad6cdb316faa3a1cdf" - integrity sha512-tiuKE510Md0RR2+Pkh+YSj41mZmPv/l0c6Mi71mhHiHG5YABjVxbJxoG06WRm/qDkwCwkFcdKRUy/Cu+n9SGDQ== +"@docusaurus/plugin-debug@2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.0.0-beta.14.tgz#74d661a5cfefded7c9c281956ec2ec02260b576d" + integrity sha512-l0T26nZ9keyG2HrWwfwwHdqRzJg6cEJahyvKmnAOFfKieHPMxCJ9axBW+Ecy2PUMwJO7rILc6UObbhifNH7PnQ== dependencies: - "@docusaurus/core" "2.0.0-beta.13" - "@docusaurus/utils" "2.0.0-beta.13" + "@docusaurus/core" "2.0.0-beta.14" + "@docusaurus/utils" "2.0.0-beta.14" fs-extra "^10.0.0" react-json-view "^1.21.3" tslib "^2.3.1" -"@docusaurus/plugin-google-analytics@2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.13.tgz#4f1eea13c32fa3ccc84b865eaafe988f36d4d95b" - integrity sha512-I37v2aWq43EXVScSOrYqP6PtHNVWar9OJ4Pbgwx1GNAy2VTyAQMoD8cLOCm6LVsEPxzIj+JsvGHrMlzaXZ3WIQ== +"@docusaurus/plugin-google-analytics@2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.0.0-beta.14.tgz#16bfdd9245767e008be88cfeb47c7ceeef3884f6" + integrity sha512-fVtAwqK9iHjj32Dtg0j+T6ikD8yjTh5ruYru7rKYxld6LSSkU29Q0wp39qYxR390jn3rkrXLRCZ7qHT/Hs0zZg== dependencies: - "@docusaurus/core" "2.0.0-beta.13" - "@docusaurus/utils-validation" "2.0.0-beta.13" + "@docusaurus/core" "2.0.0-beta.14" + "@docusaurus/utils-validation" "2.0.0-beta.14" + tslib "^2.3.1" -"@docusaurus/plugin-google-gtag@2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.13.tgz#9d0c477cb3e85ece99f1846d70c0e21d32cb107e" - integrity sha512-+V4Fp0KaIi50Mf7G0qj1g4xynF6pqDZjhvzZrQG351As9JZanLUIC9ggAleXLQih+ZST1qEEgjogVSlikNlcCQ== +"@docusaurus/plugin-google-gtag@2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.0.0-beta.14.tgz#be950af01da784965a7fd7ba61d557055cceeb5e" + integrity sha512-DcaNRvu0VLS/C6qRAG0QNWjnuP8dAdzH0NOfl86AxdK6dWOP5NlGD9QoIFKTa19PB8iTzM2XZn/hOCub4hR6MQ== dependencies: - "@docusaurus/core" "2.0.0-beta.13" - "@docusaurus/utils-validation" "2.0.0-beta.13" + "@docusaurus/core" "2.0.0-beta.14" + "@docusaurus/utils-validation" "2.0.0-beta.14" + tslib "^2.3.1" -"@docusaurus/plugin-ideal-image@^2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-ideal-image/-/plugin-ideal-image-2.0.0-beta.13.tgz#0ced3a54fade0c6878bfb4a971c466b27e17ad57" - integrity sha512-8CVBnsCV3hbNQjuusx9i0TfZkY7NZbofWh9etCceuTzY31qkrsz3i9buGsugJydGA+LXcqJ6lXz0Oy1qhrOajQ== +"@docusaurus/plugin-ideal-image@^2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-ideal-image/-/plugin-ideal-image-2.0.0-beta.14.tgz#37e63b14f75942929ec31701e1292d43b03973d2" + integrity sha512-FIt/Ww68YDDPYM/SxdrhYaFHEPBir1/2BOtq7Mtfo61sY67rbtBIOqyYMmgpNhswqQHgLIvdUmdSBqCDyP6c7Q== dependencies: - "@docusaurus/core" "2.0.0-beta.13" - "@docusaurus/lqip-loader" "2.0.0-beta.13" + "@docusaurus/core" "2.0.0-beta.14" + "@docusaurus/lqip-loader" "2.0.0-beta.14" "@docusaurus/responsive-loader" "1.5.0" "@endiliey/react-ideal-image" "^0.0.11" react-waypoint "^10.1.0" @@ -1984,34 +1995,34 @@ tslib "^2.3.1" webpack "^5.61.0" -"@docusaurus/plugin-sitemap@2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.13.tgz#d2a2e0eb28286e6277f229a6c3f47ab1b05be052" - integrity sha512-SEiefgI9nDWgtQXMzaIHAQwKIsof9tYp0iU7BEqRSJqM2CX3LwGIGr1JpQOxBUJfbHu5tk1LMgJO11Pfz/fMNQ== +"@docusaurus/plugin-sitemap@2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.0.0-beta.14.tgz#13042fee40ab2a66615c44d9ef440abb3df5c42a" + integrity sha512-ikSgz4VAttDB2uOrPa7fq/E/GKS5HAtKfD572kBj8RvppdlgFYwCLZ88ex5cnRFF//2ccaobYkU4QwDw2UKWMA== dependencies: - "@docusaurus/core" "2.0.0-beta.13" - "@docusaurus/utils" "2.0.0-beta.13" - "@docusaurus/utils-common" "2.0.0-beta.13" - "@docusaurus/utils-validation" "2.0.0-beta.13" + "@docusaurus/core" "2.0.0-beta.14" + "@docusaurus/utils" "2.0.0-beta.14" + "@docusaurus/utils-common" "2.0.0-beta.14" + "@docusaurus/utils-validation" "2.0.0-beta.14" fs-extra "^10.0.0" sitemap "^7.0.0" tslib "^2.3.1" -"@docusaurus/preset-classic@^2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.13.tgz#907badfe99e46d37ab900f148cc7169671c7fe95" - integrity sha512-LuxZc7/VO0abXVccQaSXND6mY6hA62DKadp4Gaw+IZV5vabrlBLQYaN9G/Cn5De+b1G5qbsyNS3sz6UQLWqQvA== +"@docusaurus/preset-classic@^2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.0.0-beta.14.tgz#128026fb201fdc6271614587ca09187bc83d930a" + integrity sha512-43rHA6wM4FcbHLPiBpqY4VSUjUXOWvW/N4q0wvf1LMoPH25lUzIaldpjD3Unzq5+UCYCFES24ktl58QOh7PB2g== dependencies: - "@docusaurus/core" "2.0.0-beta.13" - "@docusaurus/plugin-content-blog" "2.0.0-beta.13" - "@docusaurus/plugin-content-docs" "2.0.0-beta.13" - "@docusaurus/plugin-content-pages" "2.0.0-beta.13" - "@docusaurus/plugin-debug" "2.0.0-beta.13" - "@docusaurus/plugin-google-analytics" "2.0.0-beta.13" - "@docusaurus/plugin-google-gtag" "2.0.0-beta.13" - "@docusaurus/plugin-sitemap" "2.0.0-beta.13" - "@docusaurus/theme-classic" "2.0.0-beta.13" - "@docusaurus/theme-search-algolia" "2.0.0-beta.13" + "@docusaurus/core" "2.0.0-beta.14" + "@docusaurus/plugin-content-blog" "2.0.0-beta.14" + "@docusaurus/plugin-content-docs" "2.0.0-beta.14" + "@docusaurus/plugin-content-pages" "2.0.0-beta.14" + "@docusaurus/plugin-debug" "2.0.0-beta.14" + "@docusaurus/plugin-google-analytics" "2.0.0-beta.14" + "@docusaurus/plugin-google-gtag" "2.0.0-beta.14" + "@docusaurus/plugin-sitemap" "2.0.0-beta.14" + "@docusaurus/theme-classic" "2.0.0-beta.14" + "@docusaurus/theme-search-algolia" "2.0.0-beta.14" "@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": version "5.5.2" @@ -2028,25 +2039,25 @@ dependencies: loader-utils "^2.0.0" -"@docusaurus/theme-classic@2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.13.tgz#131f04dd1812ea3534c59fdb6a970e191fabdd46" - integrity sha512-c5yc4OauJ0MxVVa872lV2eBUho4xpUaq0U151dXbpQbIs5YRc1RWitzGOSUPuTrERT/d887TuQDfofh/zTHdAQ== +"@docusaurus/theme-classic@2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.0.0-beta.14.tgz#1e11f0e034bbb530ce38e669bc61a8eeea839132" + integrity sha512-gAatNruzgPh1NdCcIJPkhBpZE4jmbO+nYwpk/scatYQWBkhOs/fcI9tieIaGZIqi60N6lAUYQkPH+qXtLxX7Iw== dependencies: - "@docusaurus/plugin-content-blog" "2.0.0-beta.13" - "@docusaurus/plugin-content-docs" "2.0.0-beta.13" - "@docusaurus/plugin-content-pages" "2.0.0-beta.13" - "@docusaurus/theme-common" "2.0.0-beta.13" - "@docusaurus/theme-translations" "2.0.0-beta.13" - "@docusaurus/utils" "2.0.0-beta.13" - "@docusaurus/utils-validation" "2.0.0-beta.13" + "@docusaurus/core" "2.0.0-beta.14" + "@docusaurus/plugin-content-blog" "2.0.0-beta.14" + "@docusaurus/plugin-content-docs" "2.0.0-beta.14" + "@docusaurus/plugin-content-pages" "2.0.0-beta.14" + "@docusaurus/theme-common" "2.0.0-beta.14" + "@docusaurus/theme-translations" "2.0.0-beta.14" + "@docusaurus/utils" "2.0.0-beta.14" + "@docusaurus/utils-validation" "2.0.0-beta.14" "@mdx-js/mdx" "^1.6.21" "@mdx-js/react" "^1.6.21" - chalk "^4.1.2" clsx "^1.1.1" copy-text-to-clipboard "^3.0.1" globby "^11.0.2" - infima "0.2.0-alpha.36" + infima "0.2.0-alpha.37" lodash "^4.17.20" postcss "^8.3.7" prism-react-renderer "^1.2.1" @@ -2054,49 +2065,51 @@ react-router-dom "^5.2.0" rtlcss "^3.3.0" -"@docusaurus/theme-common@2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.13.tgz#3b1e2374ed5b2ef7315e197dd8448d824b1853cf" - integrity sha512-lperE2dgmKmSHIRaMx34qTTwsjDsKu2WSZwbZ/faIPt5lups2OgiON154qYfFqOVwbM+IvdFQWfo4RiEaNesvQ== +"@docusaurus/theme-common@2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.0.0-beta.14.tgz#9795071a0df62b7700f6fbdea09946f3aae8183d" + integrity sha512-hr/+rx9mszjMEbrR329WFSj1jl/VxglSggLWhXqswiA3Lh5rbbeQv2ExwpBl4JBG5HxvtHUYmwYOuOTMuvRYTQ== dependencies: - "@docusaurus/plugin-content-blog" "2.0.0-beta.13" - "@docusaurus/plugin-content-docs" "2.0.0-beta.13" - "@docusaurus/plugin-content-pages" "2.0.0-beta.13" + "@docusaurus/plugin-content-blog" "2.0.0-beta.14" + "@docusaurus/plugin-content-docs" "2.0.0-beta.14" + "@docusaurus/plugin-content-pages" "2.0.0-beta.14" clsx "^1.1.1" fs-extra "^10.0.0" parse-numeric-range "^1.3.0" tslib "^2.3.1" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.13.tgz#095c8ffbe1120c2a6f564e8e0fd9418dba2df267" - integrity sha512-/+jiRQvuG85iWlOsprQd/1OGUifwN8t9WMlPA6TjAcUoycFdra73P/1RHZzMjuUd8CV0VbzaD+wLCryMdf5lIw== +"@docusaurus/theme-search-algolia@2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.0.0-beta.14.tgz#0238622324251c42098b2ccada4e19c3e92cd772" + integrity sha512-kTQl8vKXn8FAVVkCeN4XvU8PGWZTHToc+35F9GL06b4rv33zL9HaFIRX3nPM1NHC7I8qh+6gGeV0DRKGjO+j2g== dependencies: "@docsearch/react" "^3.0.0-alpha.39" - "@docusaurus/core" "2.0.0-beta.13" - "@docusaurus/theme-common" "2.0.0-beta.13" - "@docusaurus/theme-translations" "2.0.0-beta.13" - "@docusaurus/utils" "2.0.0-beta.13" - "@docusaurus/utils-validation" "2.0.0-beta.13" + "@docusaurus/core" "2.0.0-beta.14" + "@docusaurus/logger" "2.0.0-beta.14" + "@docusaurus/theme-common" "2.0.0-beta.14" + "@docusaurus/theme-translations" "2.0.0-beta.14" + "@docusaurus/utils" "2.0.0-beta.14" + "@docusaurus/utils-validation" "2.0.0-beta.14" algoliasearch "^4.10.5" algoliasearch-helper "^3.5.5" clsx "^1.1.1" eta "^1.12.3" lodash "^4.17.20" + tslib "^2.3.1" -"@docusaurus/theme-translations@2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.0.0-beta.13.tgz#353ebe3d20994a6d71edf28d62aa663db5fa2e92" - integrity sha512-ZDjObLcJCoylltgbnyOr3gnkh+pOH3U7m3kJJNyVuC3yPIK97NHcQXO5FxujlwjtWL11BIGDOu+oZsmaNL7PMw== +"@docusaurus/theme-translations@2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.0.0-beta.14.tgz#30f230c66aad3e085d680d49db484b663041be75" + integrity sha512-b67qJJIWc3A2tanYslDGpAUGfJ7oVAl+AdjGBYG3j3hYEUSyVUBzm8Y4iyCFEfW6BTx9pjqC/ECNO3iH2L3Ixg== dependencies: fs-extra "^10.0.0" tslib "^2.3.1" -"@docusaurus/types@2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.13.tgz#1a837bdd13e9384bdbdb301dd0c31f9c97ea8197" - integrity sha512-4kGninMm3uEcvN/KXBAmc4nR83jPC8h7bPY2MsioSAjL8T0i2f7dUqmVQuIT3vJ69VQaY9HtWhJcTPPYeY3B/w== +"@docusaurus/types@2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.0.0-beta.14.tgz#d9e1bae14a16ad96c51caaea3c5049eedbaed869" + integrity sha512-1mVrVI0crwZrnjJJeUJUfBrwKdPJVsvh3E0I4pRG9Bo9dfeT8j3bj/GgjaKX4VYRFkDfsVPEpMfrVWujiWr4qQ== dependencies: commander "^5.1.0" joi "^17.4.2" @@ -2105,31 +2118,31 @@ webpack "^5.61.0" webpack-merge "^5.8.0" -"@docusaurus/utils-common@2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.13.tgz#12511a35b1fdb1c57b773ed8fb92ad7cffd4da47" - integrity sha512-jtTGqFbk0qL+338w311aYxpBScAS7MjwXbQdxkBtTV3iELApl6Vc2XXspWCWAQGr+BsRjjz+jnVei9BqUG1PnQ== +"@docusaurus/utils-common@2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.0.0-beta.14.tgz#4ee8a266366722b2c98e17c12b109236dd2b32fb" + integrity sha512-hNWyy083Bm+6jEzsm05gFmEfwumXph0E46s2HrWkSM8tClrOVmu/C1Rm7kWYn561gXHhrATtyXr/u8bKXByFcQ== dependencies: tslib "^2.3.1" -"@docusaurus/utils-validation@2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.13.tgz#3ec823a9587f1163e679f7d284277a5b912ea4da" - integrity sha512-2ucoqiFKQURCmqxRN3uYwper/uEWiY0auMRMt0RnhgRZlY3460IoPMjs5ewyjWAP7huRMhNz/FMmNUheKEK06w== +"@docusaurus/utils-validation@2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.0.0-beta.14.tgz#c5e54adbe6dd4b3d6f5525ae5138c0214e75a6c2" + integrity sha512-ttDp/fXjbM6rTfP8XCmBKtNygfPg8cncp+rPsWHdSFjGmE7HkinilFTtaw0Zos/096TtxsQx3DgGQyPOl6prnA== dependencies: - "@docusaurus/utils" "2.0.0-beta.13" - chalk "^4.1.2" + "@docusaurus/logger" "2.0.0-beta.14" + "@docusaurus/utils" "2.0.0-beta.14" joi "^17.4.2" tslib "^2.3.1" -"@docusaurus/utils@2.0.0-beta.13": - version "2.0.0-beta.13" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.13.tgz#aac3d7732593969cacfca29675c490b0309dc324" - integrity sha512-jvQynP//qwqwD8tvCdCH6a9QMc8XQwC6nJsU3pu6+dvU9STVrriBH4RmrQSL4orPFdJ46sBjQEH7DD3sYvv9fw== +"@docusaurus/utils@2.0.0-beta.14": + version "2.0.0-beta.14" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.0.0-beta.14.tgz#494d2181cc0fd264ebe12f2a08c6ae04878e5f90" + integrity sha512-7V+X70a+7UJHS7PeXS/BO2jz+zXaKhRlT7MUe5khu6i6n1oQA3Jqx1sfu78slemqEWe8u337jxal6uILcB0IWQ== dependencies: + "@docusaurus/logger" "2.0.0-beta.14" "@mdx-js/runtime" "^1.6.22" "@svgr/webpack" "^6.0.0" - chalk "^4.1.2" escape-string-regexp "^4.0.0" file-loader "^6.2.0" fs-extra "^10.0.0" @@ -2330,23 +2343,6 @@ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== -"@prisma/client@^3.6.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@prisma/client/-/client-3.6.0.tgz#68a60cd4c73a369b11f72e173e86fd6789939293" - integrity sha512-ycSGY9EZGROtje0iCNsgC5Zqi/ttX2sO7BNMYaLsUMiTlf3F69ZPH+08pRo0hrDfkZzyimXYqeXJlaoYDH1w7A== - dependencies: - "@prisma/engines-version" "3.6.0-24.dc520b92b1ebb2d28dc3161f9f82e875bd35d727" - -"@prisma/engines-version@3.6.0-24.dc520b92b1ebb2d28dc3161f9f82e875bd35d727": - version "3.6.0-24.dc520b92b1ebb2d28dc3161f9f82e875bd35d727" - resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-3.6.0-24.dc520b92b1ebb2d28dc3161f9f82e875bd35d727.tgz#25aa447776849a774885866b998732b37ec4f4f5" - integrity sha512-vtoO2ys6mSfc8ONTWdcYztKN3GBU1tcKBj0aXObyjzSuGwHFcM/pEA0xF+n1W4/0TAJgfoPX2khNEit6g0jtNA== - -"@prisma/engines@3.6.0-24.dc520b92b1ebb2d28dc3161f9f82e875bd35d727": - version "3.6.0-24.dc520b92b1ebb2d28dc3161f9f82e875bd35d727" - resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-3.6.0-24.dc520b92b1ebb2d28dc3161f9f82e875bd35d727.tgz#c68ede6aeffa9ef7743a32cfa6daf9172a4e15b3" - integrity sha512-dRClHS7DsTVchDKzeG72OaEyeDskCv91pnZ72Fftn0mp4BkUvX2LvWup65hCNzwwQm5IDd6A88APldKDnMiEMA== - "@sideway/address@^4.1.0": version "4.1.2" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.2.tgz#811b84333a335739d3969cfc434736268170cad1" @@ -2380,45 +2376,6 @@ url "^0.11.0" webpack-sources "^1.4.3" -"@supabase/gotrue-js@^1.21.7": - version "1.21.7" - resolved "https://registry.yarnpkg.com/@supabase/gotrue-js/-/gotrue-js-1.21.7.tgz#ec3fdf2199a28fb65c1ae94a3c10032536c0aa4e" - integrity sha512-YnL4cO3Q+ugatWEtgCEnLt+Wwi0VpOVTPSSjSSUho2x3cH7+juRBTrVbYky/W6YVgAw/ZJrVUFPh/NcUCUhdmw== - dependencies: - cross-fetch "^3.0.6" - -"@supabase/postgrest-js@^0.35.0": - version "0.35.0" - resolved "https://registry.yarnpkg.com/@supabase/postgrest-js/-/postgrest-js-0.35.0.tgz#a00bda3a0af75e2af6eb31b47742ba112e74686c" - integrity sha512-z+XKJ2oXuGEAEBVXseeQUXaM3ekQZK4XF0Kc399Glyg+rZaBTwNeJtY+Q/23NcIE5uNMYbTnEXm80jZbLBnWdw== - dependencies: - cross-fetch "^3.0.6" - -"@supabase/realtime-js@^1.3.3": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@supabase/realtime-js/-/realtime-js-1.3.3.tgz#973c4cacf8062b4f1e435a0b250a2758e16e15f1" - integrity sha512-9D79jlo/56VQf/U7TWhu24epCoj0vWJ7ALkGcqci8Luk/iOcdCxY1NJ76BbS1UnpXEIvQxQGb1R5NSexriKcUA== - dependencies: - "@types/websocket" "^1.0.3" - websocket "^1.0.34" - -"@supabase/storage-js@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@supabase/storage-js/-/storage-js-1.5.0.tgz#5a8390e3102eaab80d394e1734b0ba6c52a3c2cc" - integrity sha512-ki2HT9FrCYRN3yoqWqX+u47TUHQ8lgSStAqV/97kMov1z2d+iIlqGBGVcaGDqq4NvK8CipG8IJARYM72oX+afA== - dependencies: - cross-fetch "^3.1.0" - -"@supabase/supabase-js@^1.28.6": - version "1.28.6" - resolved "https://registry.yarnpkg.com/@supabase/supabase-js/-/supabase-js-1.28.6.tgz#be3e85c9f1c6c3c319995d987eda08c66ead75f4" - integrity sha512-xi7txkybcCFLhEFKUFpmvp/ZV/0Ak31w1FZ0eMKAab26yYBRkZPVcogwekOOzLMgSyti/ZZXpWh2x3xMbT9smQ== - dependencies: - "@supabase/gotrue-js" "^1.21.7" - "@supabase/postgrest-js" "^0.35.0" - "@supabase/realtime-js" "^1.3.3" - "@supabase/storage-js" "^1.5.0" - "@svgr/babel-plugin-add-jsx-attribute@^6.0.0": version "6.0.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.0.0.tgz#bd6d1ff32a31b82b601e73672a789cc41e84fe18" @@ -2713,13 +2670,6 @@ resolved "https://registry.yarnpkg.com/@types/w3c-web-serial/-/w3c-web-serial-1.0.2.tgz#8bf21f90b40dda6d2e2e6b188417b6bd66525d03" integrity sha512-Ftx4BtLxgAnel7V7GbHylCYjSq827A+jeEE3SnTS7huCGUN0pSwUn+CchTCT9TkZj9w+NVMUq4Bk2R0GvUNmAQ== -"@types/websocket@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.4.tgz#1dc497280d8049a5450854dd698ee7e6ea9e60b8" - integrity sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA== - dependencies: - "@types/node" "*" - "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -3334,13 +3284,6 @@ buffer@^5.2.0, buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -bufferutil@^4.0.1: - version "4.0.5" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.5.tgz#da9ea8166911cc276bf677b8aed2d02d31f59028" - integrity sha512-HTm14iMQKK2FjFLRTM5lAVcyaUzOnqbPtesFIvREgXpJHdQm8bWS+GkQgIkfaBYRHuCnea7w8UVNfwiAQhlr9A== - dependencies: - node-gyp-build "^4.3.0" - bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -3785,7 +3728,7 @@ cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: path-type "^4.0.0" yaml "^1.10.0" -cross-fetch@^3.0.4, cross-fetch@^3.0.6, cross-fetch@^3.1.0: +cross-fetch@^3.0.4: version "3.1.4" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.4.tgz#9723f3a3a247bf8b89039f3a380a9244e8fa2f39" integrity sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ== @@ -3960,15 +3903,7 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.10.tgz#2ad3a7bed70f35b965707c092e5f30b327c290e5" integrity sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA== -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -debug@2.6.9, debug@^2.2.0, debug@^2.6.0: +debug@2.6.9, debug@^2.6.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -4321,32 +4256,6 @@ es-module-lexer@^0.9.0: resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== -es5-ext@^0.10.35, es5-ext@^0.10.50: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" - -es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -4513,13 +4422,6 @@ express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" -ext@^1.1.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" - integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== - dependencies: - type "^2.5.0" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -5318,10 +5220,10 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -infima@0.2.0-alpha.36: - version "0.2.0-alpha.36" - resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.36.tgz#205515680e2dc588ec1a07b6ce108e49b29cc810" - integrity sha512-tlhQa7S09+QzQs8hCZ9oBeD6xOFap1f2zDO4I5HRZ4SMFKKGk9sIhwaou1FWpYoqM6aaoK2YN+G1fND+Sad1Qw== +infima@0.2.0-alpha.37: + version "0.2.0-alpha.37" + resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.37.tgz#b87ff42d528d6d050098a560f0294fbdd12adb78" + integrity sha512-4GX7Baw+/lwS4PPW/UJNY89tWSvYG1DL6baKVdpK6mC593iRgMssxNtORMTFArLPJ/A/lzsGhRmx+z6MaMxj0Q== inflight@^1.0.4: version "1.0.6" @@ -6208,11 +6110,6 @@ neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - no-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" @@ -6250,11 +6147,6 @@ node-forge@^0.10.0: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== -node-gyp-build@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" - integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== - node-releases@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" @@ -7047,13 +6939,6 @@ prism-react-renderer@^1.2.1: resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.2.1.tgz#392460acf63540960e5e3caa699d851264e99b89" integrity sha512-w23ch4f75V1Tnz8DajsYKvY5lF7H1+WvzvLUcF0paFxkTHSp42RS0H5CttdN2Q8RR3DRGZ9v5xD/h3n8C8kGmg== -prisma@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/prisma/-/prisma-3.6.0.tgz#99532abc02e045e58c6133a19771bdeb28cecdbe" - integrity sha512-6SqgHS/5Rq6HtHjsWsTxlj+ySamGyCLBUQfotc2lStOjPv52IQuDVpp58GieNqc9VnfuFyHUvTZw7aQB+G2fvQ== - dependencies: - "@prisma/engines" "3.6.0-24.dc520b92b1ebb2d28dc3161f9f82e875bd35d727" - prismjs@^1.23.0: version "1.25.0" resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.25.0.tgz#6f822df1bdad965734b310b315a23315cf999756" @@ -8403,16 +8288,6 @@ type-is@~1.6.17, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" - integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== - typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -8641,13 +8516,6 @@ use-latest@^1.0.0: dependencies: use-isomorphic-layout-effect "^1.0.0" -utf-8-validate@^5.0.2: - version "5.0.7" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.7.tgz#c15a19a6af1f7ad9ec7ddc425747ca28c3644922" - integrity sha512-vLt1O5Pp+flcArHGIyKEQq883nBt8nN8tVBcoL0qUXj2XT1n7p70yGIq2VK98I5FdZ1YHc0wk/koOnHjnXWk1Q== - dependencies: - node-gyp-build "^4.3.0" - utif@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/utif/-/utif-2.0.1.tgz#9e1582d9bbd20011a6588548ed3266298e711759" @@ -8876,18 +8744,6 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -websocket@^1.0.34: - version "1.0.34" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" - integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== - dependencies: - bufferutil "^4.0.1" - debug "^2.2.0" - es5-ext "^0.10.50" - typedarray-to-buffer "^3.1.5" - utf-8-validate "^5.0.2" - yaeti "^0.0.6" - which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -9000,11 +8856,6 @@ xtend@^4.0.0, xtend@^4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== -yaeti@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" - integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= - yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" From b00604e24936631f8830d4b8507d02c998c02c05 Mon Sep 17 00:00:00 2001 From: Sacha Weatherstone Date: Thu, 23 Dec 2021 01:53:13 +1100 Subject: [PATCH 08/24] fix submodules & api url --- .env.example | 1 + .gitmodules | 8 ++++++- docusaurus.config.js | 8 +++---- package.json | 1 + protobufs | 2 +- src/pages/index.tsx | 6 ++--- src/pages/showcase/_components/Filters.tsx | 2 +- static/design | 1 + website/docusaurus.config.js | 6 ++--- yarn.lock | 26 ++++++++++++++++++++++ 10 files changed, 47 insertions(+), 14 deletions(-) create mode 100644 .env.example create mode 160000 static/design diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..fd2fa8ec --- /dev/null +++ b/.env.example @@ -0,0 +1 @@ +API_URL= \ No newline at end of file diff --git a/.gitmodules b/.gitmodules index da64056a..59e28ea8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,4 +4,10 @@ [submodule "protobufs"] path = protobufs url = https://github.com/meshtastic/meshtastic-protobufs/ -s \ No newline at end of file +s +[submodule "public/design"] + path = public/design + url = https://github.com/meshtastic/meshtastic-design/ +[submodule "static/design"] + path = static/design + url = https://github.com/meshtastic/meshtastic-design/ diff --git a/docusaurus.config.js b/docusaurus.config.js index 5102a3f9..7555a13d 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -8,7 +8,7 @@ const config = { baseUrl: "/", onBrokenLinks: "throw", onBrokenMarkdownLinks: "warn", - favicon: "img/meshtastic-design/web/favicon.ico", + favicon: "design/web/favicon.ico", organizationName: "meshtastic", projectName: "meshtastic", themeConfig: /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ { @@ -28,8 +28,8 @@ const config = { hideOnScroll: true, logo: { alt: "Meshtastic Logo", - src: "img/meshtastic-design/logo/svg/Mesh_Logo_Black.svg", - srcDark: "img/meshtastic-design/logo/svg/Mesh_Logo_White.svg", + src: "design/logo/svg/Mesh_Logo_Black.svg", + srcDark: "design/logo/svg/Mesh_Logo_White.svg", }, items: [ { @@ -128,7 +128,7 @@ const config = { }, ], ], - plugins: ["@docusaurus/plugin-ideal-image"], + plugins: ["@docusaurus/plugin-ideal-image", "docusaurus2-dotenv"], }; module.exports = config; diff --git a/package.json b/package.json index 0a30b9be..22837513 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "@docusaurus/plugin-ideal-image": "^2.0.0-beta.14", "@docusaurus/preset-classic": "^2.0.0-beta.14", "@mdx-js/react": "^1.6.22", + "docusaurus2-dotenv": "^1.4.0", "esp-web-flasher": "^4.0.0", "react": "^17.0.2", "react-dom": "^17.0.2", diff --git a/protobufs b/protobufs index 13fb87d4..c52c8ef9 160000 --- a/protobufs +++ b/protobufs @@ -1 +1 @@ -Subproject commit 13fb87d4e037ee8e77945b5b38881dfa4ca8d898 +Subproject commit c52c8ef99ead88a5edb73891b33247c54d37cb28 diff --git a/src/pages/index.tsx b/src/pages/index.tsx index c2814e4d..8aac78bc 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -100,9 +100,7 @@ function Home() {

{siteConfig.tagline}

diff --git a/src/pages/showcase/_components/Filters.tsx b/src/pages/showcase/_components/Filters.tsx index cad38051..e199dd12 100644 --- a/src/pages/showcase/_components/Filters.tsx +++ b/src/pages/showcase/_components/Filters.tsx @@ -11,7 +11,7 @@ import { TagSelect } from './TagSelect'; export const Filters = (): JSX.Element => { const { data, error } = useSWR( - "http://localhost:4000/showcase/tags", + `${process.env.API_URL}/showcase/tags`, fetcher ); return ( diff --git a/static/design b/static/design new file mode 160000 index 00000000..b75f60a9 --- /dev/null +++ b/static/design @@ -0,0 +1 @@ +Subproject commit b75f60a91abc22367ec017ab0c9eea828784a6ac diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 5102a3f9..1cd5a029 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -8,7 +8,7 @@ const config = { baseUrl: "/", onBrokenLinks: "throw", onBrokenMarkdownLinks: "warn", - favicon: "img/meshtastic-design/web/favicon.ico", + favicon: "design/web/favicon.ico", organizationName: "meshtastic", projectName: "meshtastic", themeConfig: /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ { @@ -28,8 +28,8 @@ const config = { hideOnScroll: true, logo: { alt: "Meshtastic Logo", - src: "img/meshtastic-design/logo/svg/Mesh_Logo_Black.svg", - srcDark: "img/meshtastic-design/logo/svg/Mesh_Logo_White.svg", + src: "design/logo/svg/Mesh_Logo_Black.svg", + srcDark: "design/logo/svg/Mesh_Logo_White.svg", }, items: [ { diff --git a/yarn.lock b/yarn.lock index 908481e2..a0e0c132 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4073,6 +4073,13 @@ dns-txt@^2.0.2: dependencies: buffer-indexof "^1.0.0" +docusaurus2-dotenv@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/docusaurus2-dotenv/-/docusaurus2-dotenv-1.4.0.tgz#9ab900e29de9081f9f1f28f7224ff63760385641" + integrity sha512-iWqem5fnBAyeBBtX75Fxp71uUAnwFaXzOmade8zAhN4vL3RG9m27sLSRwjJGVVgIkEo3esjGyCcTGTiCjfi+sg== + dependencies: + dotenv-webpack "1.7.0" + dom-converter@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" @@ -4174,6 +4181,25 @@ dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" +dotenv-defaults@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/dotenv-defaults/-/dotenv-defaults-1.1.1.tgz#032c024f4b5906d9990eb06d722dc74cc60ec1bd" + integrity sha512-6fPRo9o/3MxKvmRZBD3oNFdxODdhJtIy1zcJeUSCs6HCy4tarUpd+G67UTU9tF6OWXeSPqsm4fPAB+2eY9Rt9Q== + dependencies: + dotenv "^6.2.0" + +dotenv-webpack@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/dotenv-webpack/-/dotenv-webpack-1.7.0.tgz#4384d8c57ee6f405c296278c14a9f9167856d3a1" + integrity sha512-wwNtOBW/6gLQSkb8p43y0Wts970A3xtNiG/mpwj9MLUhtPCQG6i+/DSXXoNN7fbPCU/vQ7JjwGmgOeGZSSZnsw== + dependencies: + dotenv-defaults "^1.0.2" + +dotenv@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" + integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== + duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" From 116dac7f8172738c347e60e2565f724d78fd2f5a Mon Sep 17 00:00:00 2001 From: Sacha Weatherstone Date: Thu, 23 Dec 2021 02:01:33 +1100 Subject: [PATCH 09/24] Fix dotenv --- docusaurus.config.js | 2 +- package.json | 2 +- yarn.lock | 38 +++++++++++++++++++------------------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index 7555a13d..4181391a 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -128,7 +128,7 @@ const config = { }, ], ], - plugins: ["@docusaurus/plugin-ideal-image", "docusaurus2-dotenv"], + plugins: ["@docusaurus/plugin-ideal-image", "docusaurus-plugin-dotenv"], }; module.exports = config; diff --git a/package.json b/package.json index 22837513..b2babd04 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "@docusaurus/plugin-ideal-image": "^2.0.0-beta.14", "@docusaurus/preset-classic": "^2.0.0-beta.14", "@mdx-js/react": "^1.6.22", - "docusaurus2-dotenv": "^1.4.0", + "docusaurus-plugin-dotenv": "^1.0.1", "esp-web-flasher": "^4.0.0", "react": "^17.0.2", "react-dom": "^17.0.2", diff --git a/yarn.lock b/yarn.lock index a0e0c132..dd5883b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4073,12 +4073,12 @@ dns-txt@^2.0.2: dependencies: buffer-indexof "^1.0.0" -docusaurus2-dotenv@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/docusaurus2-dotenv/-/docusaurus2-dotenv-1.4.0.tgz#9ab900e29de9081f9f1f28f7224ff63760385641" - integrity sha512-iWqem5fnBAyeBBtX75Fxp71uUAnwFaXzOmade8zAhN4vL3RG9m27sLSRwjJGVVgIkEo3esjGyCcTGTiCjfi+sg== +docusaurus-plugin-dotenv@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/docusaurus-plugin-dotenv/-/docusaurus-plugin-dotenv-1.0.1.tgz#e0aff6f006fd438d1e981ae2afd7b7a6bd2aa76f" + integrity sha512-qKlWuBd6UoyB0d5ExH9waYGPoy1SnWgV8s8VLg12ydcfxquazXJngV0N5VAX/HuFiZmsPD3L4TYUKxdHWJTeEw== dependencies: - dotenv-webpack "1.7.0" + dotenv-webpack "7.0.2" dom-converter@^0.2.0: version "0.2.0" @@ -4181,24 +4181,24 @@ dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" -dotenv-defaults@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/dotenv-defaults/-/dotenv-defaults-1.1.1.tgz#032c024f4b5906d9990eb06d722dc74cc60ec1bd" - integrity sha512-6fPRo9o/3MxKvmRZBD3oNFdxODdhJtIy1zcJeUSCs6HCy4tarUpd+G67UTU9tF6OWXeSPqsm4fPAB+2eY9Rt9Q== +dotenv-defaults@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz#6b3ec2e4319aafb70940abda72d3856770ee77ac" + integrity sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg== dependencies: - dotenv "^6.2.0" + dotenv "^8.2.0" -dotenv-webpack@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/dotenv-webpack/-/dotenv-webpack-1.7.0.tgz#4384d8c57ee6f405c296278c14a9f9167856d3a1" - integrity sha512-wwNtOBW/6gLQSkb8p43y0Wts970A3xtNiG/mpwj9MLUhtPCQG6i+/DSXXoNN7fbPCU/vQ7JjwGmgOeGZSSZnsw== +dotenv-webpack@7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/dotenv-webpack/-/dotenv-webpack-7.0.2.tgz#1bf2e407e92c10fbb08d815b12c991028f10f81c" + integrity sha512-RY+/5uM/XY4bGtih9f9ic8hlrUDxVcZZBPWlnX/aHhaKxcVVX9SH/5VH7CSmvVo9GL6PKvQOA0X1bc552rnatQ== dependencies: - dotenv-defaults "^1.0.2" + dotenv-defaults "^2.0.1" -dotenv@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" - integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== +dotenv@^8.2.0: + version "8.6.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" + integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== duplexer3@^0.1.4: version "0.1.4" From 9bde16bde7fcc1450770f37573aa5641a3550d53 Mon Sep 17 00:00:00 2001 From: Mike Kinney Date: Wed, 22 Dec 2021 15:54:17 -0800 Subject: [PATCH 10/24] fix example --- docs/software/python/usage.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/software/python/usage.md b/docs/software/python/usage.md index 2a8a325c..baf49a1d 100644 --- a/docs/software/python/usage.md +++ b/docs/software/python/usage.md @@ -7,8 +7,13 @@ sidebar_label: Python usage An example using Python 3 code to send a message to the mesh: ```python import meshtastic -interface = meshtastic.SerialInterface() # By default will try to find a meshtastic device, otherwise provide a device path like /dev/ttyUSB0 -interface.sendText("hello mesh") # or sendData to send binary data, see documentations for other options. +import meshtastic.serial_interface + +# By default will try to find a meshtastic device, otherwise provide a device path like /dev/ttyUSB0 +interface = meshtastic.serial_interface.SerialInterface() + +# or sendData to send binary data, see documentations for other options. +interface.sendText("hello mesh") interface.close() ``` From d972784b9d22d9ad5b862ce984ea1c64ac74f678 Mon Sep 17 00:00:00 2001 From: Mike Kinney Date: Wed, 22 Dec 2021 15:56:28 -0800 Subject: [PATCH 11/24] Revert "fix example" This reverts commit 9bde16bde7fcc1450770f37573aa5641a3550d53. --- docs/software/python/usage.md | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/docs/software/python/usage.md b/docs/software/python/usage.md index baf49a1d..2a8a325c 100644 --- a/docs/software/python/usage.md +++ b/docs/software/python/usage.md @@ -7,13 +7,8 @@ sidebar_label: Python usage An example using Python 3 code to send a message to the mesh: ```python import meshtastic -import meshtastic.serial_interface - -# By default will try to find a meshtastic device, otherwise provide a device path like /dev/ttyUSB0 -interface = meshtastic.serial_interface.SerialInterface() - -# or sendData to send binary data, see documentations for other options. -interface.sendText("hello mesh") +interface = meshtastic.SerialInterface() # By default will try to find a meshtastic device, otherwise provide a device path like /dev/ttyUSB0 +interface.sendText("hello mesh") # or sendData to send binary data, see documentations for other options. interface.close() ``` From d77b684a7f51d62bdaf7ac97d8b6356fe03d0b1d Mon Sep 17 00:00:00 2001 From: Mike Kinney Date: Wed, 22 Dec 2021 15:58:04 -0800 Subject: [PATCH 12/24] fix example in branch this time --- docs/software/python/usage.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/software/python/usage.md b/docs/software/python/usage.md index 2a8a325c..baf49a1d 100644 --- a/docs/software/python/usage.md +++ b/docs/software/python/usage.md @@ -7,8 +7,13 @@ sidebar_label: Python usage An example using Python 3 code to send a message to the mesh: ```python import meshtastic -interface = meshtastic.SerialInterface() # By default will try to find a meshtastic device, otherwise provide a device path like /dev/ttyUSB0 -interface.sendText("hello mesh") # or sendData to send binary data, see documentations for other options. +import meshtastic.serial_interface + +# By default will try to find a meshtastic device, otherwise provide a device path like /dev/ttyUSB0 +interface = meshtastic.serial_interface.SerialInterface() + +# or sendData to send binary data, see documentations for other options. +interface.sendText("hello mesh") interface.close() ``` From 4597b76c0e78a31ffafaf6e31738a11dfd10c921 Mon Sep 17 00:00:00 2001 From: Mike Kinney Date: Wed, 22 Dec 2021 16:06:09 -0800 Subject: [PATCH 13/24] add more to the example from chrisbee input --- docs/software/python/usage.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/docs/software/python/usage.md b/docs/software/python/usage.md index baf49a1d..e786b3b2 100644 --- a/docs/software/python/usage.md +++ b/docs/software/python/usage.md @@ -4,16 +4,30 @@ title: Meshtastic-python usage sidebar_label: Python usage --- -An example using Python 3 code to send a message to the mesh: +An example using Python 3 code to send a message to the mesh, get and set a radio configuration preference: ```python import meshtastic import meshtastic.serial_interface -# By default will try to find a meshtastic device, otherwise provide a device path like /dev/ttyUSB0 +# By default will try to find a meshtastic device, +# otherwise provide a device path like /dev/ttyUSB0 interface = meshtastic.serial_interface.SerialInterface() +# or something like this +# interface = meshtastic.serial_interface.SerialInterface(devPath='/dev/cu.usbmodem53230050571') # or sendData to send binary data, see documentations for other options. interface.sendText("hello mesh") + +ourNode = interface.getNode('^local') +print(f'Our node preferences:{ourNode.radioConfig.preferences}') + +# update a value +print('Changing a preference...') +ourNode.radioConfig.preferences.gps_update_interval = 60 + +print(f'Our node preferences now:{ourNode.radioConfig.preferences}') +ourNode.writeConfig() + interface.close() ``` From 85fe6e50eb5fc74e04532a1c36518c1494659bb6 Mon Sep 17 00:00:00 2001 From: Sacha Weatherstone Date: Thu, 23 Dec 2021 17:22:01 +1100 Subject: [PATCH 14/24] Fix dotenv --- docusaurus.config.js | 7 ++++- package.json | 2 +- src/pages/showcase/_components/Card.tsx | 2 +- src/pages/showcase/_components/Filters.tsx | 6 ++++- src/pages/showcase/_components/Network.tsx | 5 +++- src/pages/showcase/_components/Networks.tsx | 11 ++++++-- yarn.lock | 29 +++------------------ 7 files changed, 30 insertions(+), 32 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index 4181391a..7cdb75dd 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -1,5 +1,7 @@ // @ts-check +require("dotenv").config(); + /** @type {import('@docusaurus/types').Config} */ const config = { title: "Meshtastic", @@ -128,7 +130,10 @@ const config = { }, ], ], - plugins: ["@docusaurus/plugin-ideal-image", "docusaurus-plugin-dotenv"], + plugins: ["@docusaurus/plugin-ideal-image"], + customFields: { + API_URL: process.env.API_URL, + }, }; module.exports = config; diff --git a/package.json b/package.json index b2babd04..a0aa31c6 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "@docusaurus/plugin-ideal-image": "^2.0.0-beta.14", "@docusaurus/preset-classic": "^2.0.0-beta.14", "@mdx-js/react": "^1.6.22", - "docusaurus-plugin-dotenv": "^1.0.1", + "dotenv": "^10.0.0", "esp-web-flasher": "^4.0.0", "react": "^17.0.2", "react-dom": "^17.0.2", diff --git a/src/pages/showcase/_components/Card.tsx b/src/pages/showcase/_components/Card.tsx index 27c71237..5199850c 100644 --- a/src/pages/showcase/_components/Card.tsx +++ b/src/pages/showcase/_components/Card.tsx @@ -25,7 +25,7 @@ export const Card = React.memo(({ network }: CardProps) => ( className="button button--primary button--block" style={{ marginBottom: "0.5rem" }} > - Get Started + Read more diff --git a/src/pages/showcase/_components/Filters.tsx b/src/pages/showcase/_components/Filters.tsx index e199dd12..f59afceb 100644 --- a/src/pages/showcase/_components/Filters.tsx +++ b/src/pages/showcase/_components/Filters.tsx @@ -3,6 +3,7 @@ import React from 'react'; import { FiHeart } from 'react-icons/fi'; import useSWR from 'swr'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import { fetcher } from '@site/src/utils/swr'; import { ShowcaseTag } from '../../../utils/apiTypes'; @@ -10,10 +11,13 @@ import { ShowcaseTag } from '../../../utils/apiTypes'; import { TagSelect } from './TagSelect'; export const Filters = (): JSX.Element => { + const { siteConfig } = useDocusaurusContext(); + const { data, error } = useSWR( - `${process.env.API_URL}/showcase/tags`, + `${siteConfig.customFields.API_URL}/showcase/tags`, fetcher ); + return (
{data && !error ? ( diff --git a/src/pages/showcase/_components/Network.tsx b/src/pages/showcase/_components/Network.tsx index 9344b7e7..5e4b7f11 100644 --- a/src/pages/showcase/_components/Network.tsx +++ b/src/pages/showcase/_components/Network.tsx @@ -2,6 +2,7 @@ import React from 'react'; import useSWR from 'swr'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import { Showcase } from '@site/src/utils/apiTypes'; import { User } from '@site/src/utils/github'; import { fetcher } from '@site/src/utils/swr'; @@ -11,8 +12,10 @@ interface NetworkProps { } export const Network = ({ id }: NetworkProps): JSX.Element => { + const { siteConfig } = useDocusaurusContext(); + const { data, error } = useSWR( - `http://localhost:4000/showcase/${id}`, + `${siteConfig.customFields.API_URL}/showcase/${id}`, fetcher ); diff --git a/src/pages/showcase/_components/Networks.tsx b/src/pages/showcase/_components/Networks.tsx index 3750b01a..63fc3d9b 100644 --- a/src/pages/showcase/_components/Networks.tsx +++ b/src/pages/showcase/_components/Networks.tsx @@ -1,8 +1,10 @@ import React from 'react'; import { FiHeart, FiSearch } from 'react-icons/fi'; +import JSONPretty from 'react-json-pretty'; import useSWR from 'swr'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import { useSelectedTags } from '@site/src/hooks/useSelectedTags'; import { useFilteredNetworks } from '../../../hooks/useFilteredNetworks'; @@ -11,10 +13,13 @@ import { fetcher } from '../../../utils/swr'; import { NetworkSection } from './NetworkSection'; export const Networks = (): JSX.Element => { + const { siteConfig } = useDocusaurusContext(); + const { data, error } = useSWR( - "http://localhost:4000/showcase", + `${siteConfig.customFields.API_URL}/showcase`, fetcher ); + const selectedTags = useSelectedTags(); const filteredNetworks = useFilteredNetworks(data ?? []); @@ -41,7 +46,9 @@ export const Networks = (): JSX.Element => { /> ) ) : error ? ( -
{error}
+
+ +
) : (
Loading...
)} diff --git a/yarn.lock b/yarn.lock index dd5883b6..4593378e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4073,13 +4073,6 @@ dns-txt@^2.0.2: dependencies: buffer-indexof "^1.0.0" -docusaurus-plugin-dotenv@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/docusaurus-plugin-dotenv/-/docusaurus-plugin-dotenv-1.0.1.tgz#e0aff6f006fd438d1e981ae2afd7b7a6bd2aa76f" - integrity sha512-qKlWuBd6UoyB0d5ExH9waYGPoy1SnWgV8s8VLg12ydcfxquazXJngV0N5VAX/HuFiZmsPD3L4TYUKxdHWJTeEw== - dependencies: - dotenv-webpack "7.0.2" - dom-converter@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" @@ -4181,24 +4174,10 @@ dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" -dotenv-defaults@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz#6b3ec2e4319aafb70940abda72d3856770ee77ac" - integrity sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg== - dependencies: - dotenv "^8.2.0" - -dotenv-webpack@7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/dotenv-webpack/-/dotenv-webpack-7.0.2.tgz#1bf2e407e92c10fbb08d815b12c991028f10f81c" - integrity sha512-RY+/5uM/XY4bGtih9f9ic8hlrUDxVcZZBPWlnX/aHhaKxcVVX9SH/5VH7CSmvVo9GL6PKvQOA0X1bc552rnatQ== - dependencies: - dotenv-defaults "^2.0.1" - -dotenv@^8.2.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" - integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== duplexer3@^0.1.4: version "0.1.4" From e2b5597edf75a4317fe93195d2c12e5fb8c4afce Mon Sep 17 00:00:00 2001 From: Sacha Weatherstone Date: Thu, 23 Dec 2021 18:05:23 +1100 Subject: [PATCH 15/24] Add Placeholder elements --- src/css/custom.css | 16 +++++ src/pages/showcase/_components/Card.tsx | 64 +++++++++++++++++++ src/pages/showcase/_components/Filters.tsx | 4 +- src/pages/showcase/_components/Network.tsx | 8 ++- .../showcase/_components/NetworkSection.tsx | 6 +- src/pages/showcase/_components/Networks.tsx | 8 +-- src/pages/showcase/_components/TagSelect.tsx | 51 +++++++++++++++ 7 files changed, 147 insertions(+), 10 deletions(-) diff --git a/src/css/custom.css b/src/css/custom.css index 4c61119e..b42adbc1 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -34,3 +34,19 @@ html[data-theme="dark"] .header-github-link:before { background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='white' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") no-repeat; } +@keyframes pulse { + 0% { + transform: scale(0.98); + box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.7); + } + + 70% { + transform: scale(1); + box-shadow: 0 0 0 10px rgba(0, 0, 0, 0); + } + + 100% { + transform: scale(0.98); + box-shadow: 0 0 0 0 rgba(0, 0, 0, 0); + } +} diff --git a/src/pages/showcase/_components/Card.tsx b/src/pages/showcase/_components/Card.tsx index 5199850c..e910f94f 100644 --- a/src/pages/showcase/_components/Card.tsx +++ b/src/pages/showcase/_components/Card.tsx @@ -31,3 +31,67 @@ export const Card = React.memo(({ network }: CardProps) => ( )); + +export const PlaceholderCard = (): JSX.Element => ( +
+
+
+
+
+
+
+
+
+
+ +   + +
+
+
+
+
+); diff --git a/src/pages/showcase/_components/Filters.tsx b/src/pages/showcase/_components/Filters.tsx index f59afceb..1e6c53da 100644 --- a/src/pages/showcase/_components/Filters.tsx +++ b/src/pages/showcase/_components/Filters.tsx @@ -8,7 +8,7 @@ import { fetcher } from '@site/src/utils/swr'; import { ShowcaseTag } from '../../../utils/apiTypes'; // import { TagList, Tags } from '../../../utils/showcase'; -import { TagSelect } from './TagSelect'; +import { PlaceholderTagSelect, TagSelect } from './TagSelect'; export const Filters = (): JSX.Element => { const { siteConfig } = useDocusaurusContext(); @@ -83,7 +83,7 @@ export const Filters = (): JSX.Element => { })} ) : ( -

Loading...

+ )}
); diff --git a/src/pages/showcase/_components/Network.tsx b/src/pages/showcase/_components/Network.tsx index 5e4b7f11..f7c02af0 100644 --- a/src/pages/showcase/_components/Network.tsx +++ b/src/pages/showcase/_components/Network.tsx @@ -1,5 +1,6 @@ import React from 'react'; +import JSONPretty from 'react-json-pretty'; import useSWR from 'swr'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; @@ -111,7 +112,12 @@ export const Network = ({ id }: NetworkProps): JSX.Element => { ) : (
-

Network not found

+ {error && ( +
+ +
+ )} + {!data &&
Loading...
}
); }; diff --git a/src/pages/showcase/_components/NetworkSection.tsx b/src/pages/showcase/_components/NetworkSection.tsx index 6b13536b..88b148a7 100644 --- a/src/pages/showcase/_components/NetworkSection.tsx +++ b/src/pages/showcase/_components/NetworkSection.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Showcase } from '../../../utils/apiTypes'; -import { Card } from './Card'; +import { Card, PlaceholderCard } from './Card'; interface NetworkSectionProps { title: string; @@ -57,7 +57,9 @@ export const NetworkSection = ({ {networks.length === 0 &&

No result

} ) : ( -
Loading...
+
+ +
)} diff --git a/src/pages/showcase/_components/Networks.tsx b/src/pages/showcase/_components/Networks.tsx index 63fc3d9b..0c2aba30 100644 --- a/src/pages/showcase/_components/Networks.tsx +++ b/src/pages/showcase/_components/Networks.tsx @@ -25,14 +25,14 @@ export const Networks = (): JSX.Element => { return (
- {data && !error ? ( + {!error ? ( selectedTags.length === 0 ? ( <> } iconColor="rgb(190 24 93)" - networks={data.filter((network) => + networks={data?.filter((network) => network.tags.find((tag) => tag.label === "Favourite") )} /> @@ -45,12 +45,10 @@ export const Networks = (): JSX.Element => { networks={filteredNetworks} /> ) - ) : error ? ( + ) : (
- ) : ( -
Loading...
)}
); diff --git a/src/pages/showcase/_components/TagSelect.tsx b/src/pages/showcase/_components/TagSelect.tsx index 273d52fd..c2e468a4 100644 --- a/src/pages/showcase/_components/TagSelect.tsx +++ b/src/pages/showcase/_components/TagSelect.tsx @@ -58,3 +58,54 @@ export const TagSelect = React.forwardRef( ); } ); + +export const PlaceholderTagSelect = (): JSX.Element => ( +
+
+
+
+
+); From 118b5be7bb81f799a99d778fa1b8f16f981c7cb9 Mon Sep 17 00:00:00 2001 From: Sacha Weatherstone Date: Thu, 23 Dec 2021 18:10:18 +1100 Subject: [PATCH 16/24] Damn Americans! --- src/pages/showcase/_components/Networks.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/showcase/_components/Networks.tsx b/src/pages/showcase/_components/Networks.tsx index 0c2aba30..e278e258 100644 --- a/src/pages/showcase/_components/Networks.tsx +++ b/src/pages/showcase/_components/Networks.tsx @@ -33,7 +33,7 @@ export const Networks = (): JSX.Element => { icon={} iconColor="rgb(190 24 93)" networks={data?.filter((network) => - network.tags.find((tag) => tag.label === "Favourite") + network.tags.find((tag) => tag.label === "Favorite") )} /> From 1fa41e7d52d695b66293b37a7aff27cc15b77250 Mon Sep 17 00:00:00 2001 From: Sacha Weatherstone Date: Thu, 23 Dec 2021 18:16:21 +1100 Subject: [PATCH 17/24] Simpler card tag badges --- src/pages/showcase/_components/CardTags.tsx | 34 ++++++--------------- 1 file changed, 9 insertions(+), 25 deletions(-) diff --git a/src/pages/showcase/_components/CardTags.tsx b/src/pages/showcase/_components/CardTags.tsx index 581c7c3b..4d444f95 100644 --- a/src/pages/showcase/_components/CardTags.tsx +++ b/src/pages/showcase/_components/CardTags.tsx @@ -8,38 +8,22 @@ export interface CardTagsProps { export const CardTags = ({ tags }: CardTagsProps) => { return ( -
    - {tags.map(({ color, description, label }, index) => { +
    + {tags.map(({ color, label }, index) => { return ( -
  • - {label.toLowerCase()} - -
  • + {label} + ); })} -
+
); }; From 538d8593c9515427eb8da9cfaf6486bbc7ada118 Mon Sep 17 00:00:00 2001 From: Sacha Weatherstone Date: Fri, 24 Dec 2021 13:17:40 +1100 Subject: [PATCH 18/24] Showcase Placeholder & Clean Footer --- docusaurus.config.js | 42 --- src/pages/showcase/_components/Card.tsx | 21 +- src/pages/showcase/_components/Network.tsx | 331 +++++++++++++++++---- 3 files changed, 283 insertions(+), 111 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index 7cdb75dd..a61b1e1e 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -63,48 +63,6 @@ const config = { ], }, footer: { - style: "dark", - links: [ - { - title: "Docs", - items: [ - { - label: "Get Started", - to: "docs/getting-started", - }, - { - label: "Showcase", - to: "showcase", - }, - ], - }, - { - title: "Community", - items: [ - { - label: "Forum", - href: "https://meshtastic.discourse.group", - }, - { - label: "Discord", - href: "https://discord.gg/UQJ5QuM7vq", - }, - ], - }, - { - title: "More", - items: [ - { - label: "GitHub", - href: "https://github.com/meshtastic/meshtastic", - }, - { - label: "Legal", - to: "docs/legal", - }, - ], - }, - ], copyright: `Powered by ▲ Vercel | Meshtastic® trademark is a registered trademark belonging to Geeksville Industries LLC`, }, algolia: { diff --git a/src/pages/showcase/_components/Card.tsx b/src/pages/showcase/_components/Card.tsx index e910f94f..c7396790 100644 --- a/src/pages/showcase/_components/Card.tsx +++ b/src/pages/showcase/_components/Card.tsx @@ -13,7 +13,9 @@ export interface CardProps { export const Card = React.memo(({ network }: CardProps) => (
- {network.title} +
+ {network.title} +

{network.title}

@@ -43,7 +45,7 @@ export const PlaceholderCard = (): JSX.Element => (
@@ -82,7 +84,20 @@ export const PlaceholderCard = (): JSX.Element => ( >   -
+
+
{ fetcher ).data; - return data && !error ? ( -
-

{data.title}

-

{data.summary}

- {githubData && ( -
- {githubData.name} -
-
{githubData.name}
-
{githubData.bio}
+ return true ? ( + + ) : ( +
+ + Back + + + {data && !error ? ( +
+

{data.title}

+

{data.summary}

+ {githubData && ( +
+ {githubData.name} +
+
{githubData.name}
+
{githubData.bio}
+
+
+ )} +
{data.body}
+ +
+
+

Bill of Materials

+
+
+ {data.materials?.map((material, index) => ( +
+
+ +
+
+
{material.name}
+ + {material.details} + +
+ + View + +
+ ))} +
+ ) : ( +
+ {error && ( +
+ +
+ )} + {!data &&
Loading...
} +
)} -
{data.body}
+
+ ); +}; +export const PlaceholderNetwork = (): JSX.Element => { + return ( +
-

Bill of Materials

-
-
- {data.materials?.map((material, index) => ( +
+
+
+
- -
-
-
{material.name}
- {material.details} -
- +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ - ) : ( -
- {error && ( -
- -
- )} - {!data &&
Loading...
} -
); }; From e92b73d1d8faa478ef40be39a895918485d8aa02 Mon Sep 17 00:00:00 2001 From: Sacha Weatherstone Date: Fri, 24 Dec 2021 17:40:29 +1100 Subject: [PATCH 19/24] Footer change --- docusaurus.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index a61b1e1e..02fb1716 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -63,7 +63,7 @@ const config = { ], }, footer: { - copyright: `Powered by ▲ Vercel | Meshtastic® trademark is a registered trademark belonging to Geeksville Industries LLC`, + copyright: `Powered by ▲ Vercel | Meshtastic® is a registered trademark of Geeksville Industries LLC`, }, algolia: { apiKey: "01ad7e13d3fe392d2ad26da3c69dbc21", From 564890a93eebe577584d65b5e878f6a5975d35f7 Mon Sep 17 00:00:00 2001 From: Sacha Weatherstone Date: Fri, 24 Dec 2021 21:41:56 +1100 Subject: [PATCH 20/24] Add mobile layout change --- src/pages/showcase/_components/Network.tsx | 23 +++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/pages/showcase/_components/Network.tsx b/src/pages/showcase/_components/Network.tsx index d40f8013..dd062ae5 100644 --- a/src/pages/showcase/_components/Network.tsx +++ b/src/pages/showcase/_components/Network.tsx @@ -25,14 +25,8 @@ export const Network = ({ id }: NetworkProps): JSX.Element => { fetcher ).data; - return true ? ( - - ) : ( + return (
- - Back - - {data && !error ? (

{data.title}

@@ -127,7 +121,7 @@ export const Network = ({ id }: NetworkProps): JSX.Element => {
)} - {!data &&
Loading...
} + {!data && }
)}
@@ -136,10 +130,17 @@ export const Network = ({ id }: NetworkProps): JSX.Element => { export const PlaceholderNetwork = (): JSX.Element => { return ( -
+
768 ? "row" : "column", + gap: "2rem", + }} + >
768 ? "60%" : "100%", }} >
{
768 ? "40%" : "100%", }} >
Date: Fri, 24 Dec 2021 09:28:48 -0800 Subject: [PATCH 21/24] Warning for the overly optomistic multi channel page --- website/docs/software/device/channels.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/website/docs/software/device/channels.md b/website/docs/software/device/channels.md index 0500d56a..e4b3e242 100644 --- a/website/docs/software/device/channels.md +++ b/website/docs/software/device/channels.md @@ -4,12 +4,12 @@ title: Multiple channel support sidebar_label: Multiple channels --- -Version 1.2 of the software adds support for multiple (simultaneous) channels. The idea behind this feature is that a mesh can allow multiple users/groups to be share common mesh infrastructure. Even including routing messages for others when no one except that subgroup of users has the encryption keys for their private channel. - -:::note -Older Meshtastic applications that don't yet understand multi-channel support will only show the user the primary channel. +:::warning +Multiple channel support is currently an experimental feature that is ONLY supported by the Python CLI. ::: +Version 1.2 of the software adds support for multiple (simultaneous) channels. The idea behind this feature is that a mesh can allow multiple users/groups to be share common mesh infrastructure. Even including routing messages for others when no one except that subgroup of users has the encryption keys for their private channel. + ### What is the Primary channel The way this works is that each node keeps a list of channels it knows about. One of those channels (normally the first one) is labelled as the "PRIMARY" channel. The primary channel is the **only** channel that is used to set radio parameters. This channel controls things like spread factor, coding rate, bandwidth etc... Indirectly this channel also is used to select the specific frequency that all members of this mesh are talking over. From 7d5c44fc0da3f08080353e52a0695519fba82718 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Fri, 24 Dec 2021 11:57:00 -0800 Subject: [PATCH 22/24] add web ui as supported multi channel client --- website/docs/software/device/channels.md | 66 ++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 website/docs/software/device/channels.md diff --git a/website/docs/software/device/channels.md b/website/docs/software/device/channels.md new file mode 100644 index 00000000..3f71dd4f --- /dev/null +++ b/website/docs/software/device/channels.md @@ -0,0 +1,66 @@ +--- +id: device-channels +title: Multiple channel support +sidebar_label: Multiple channels +--- + +:::warning +Multiple channel support is currently an experimental feature that is ONLY supported by the Python CLI and WebUI right now. +::: + +Version 1.2 of the software adds support for multiple (simultaneous) channels. The idea behind this feature is that a mesh can allow multiple users/groups to be share common mesh infrastructure. Even including routing messages for others when no one except that subgroup of users has the encryption keys for their private channel. + +### What is the Primary channel + +The way this works is that each node keeps a list of channels it knows about. One of those channels (normally the first one) is labelled as the "PRIMARY" channel. The primary channel is the **only** channel that is used to set radio parameters. This channel controls things like spread factor, coding rate, bandwidth etc... Indirectly this channel also is used to select the specific frequency that all members of this mesh are talking over. + +This channel may or may not have a PSK (encryption). If you are providing mesh to 'the public' we recommend that you always leave this channel with its default psk. The default PSK is technically encrypted (and random users sniffing the ether would have to use Meshtastic to decode it), but the key is included in the github source code and you should assume any 'attacker' would have it. But for a 'public' mesh you want this, because it allows anyone using Meshtastic in your area to send packets through 'your' mesh. + +```bash title="Setting default channel" +$ meshtastic --seturl https://www.meshtastic.org/d/#CgUYAyIBAQ +Connected to radio +``` + +The device will now have its primary channel set to the default: + +```bash title="Expected output" +$ meshtastic --info +Connected to radio +... +Channels: + PRIMARY psk=default { "modemConfig": "Bw125Cr48Sf4096", "psk": "AQ==" } +Primary channel URL: https://www.meshtastic.org/d/#CgUYAyIBAQ +``` + +### How to use Secondary channels + +Any channel you add after that Primary channel is Secondary. Secondary channels are used only for encryption and (in the case of some special applications) security. If you would like to have a private channel over a more public mesh, you probably want to create a secondary channel. When sharing that URL with your private group you will share the "Complete URL". The complete URL includes your secondary channel (for encryption) and the primary channel (to provide radio/mesh access). + +Secondary channels **must** have a PSK (encryption). + +```bash title="Adding a channel called testing" +$ meshtastic --ch-add testing +Connected to radio +Writing modified channels to device +``` + +The device will now have a Secondary channel called "testing" + +```bash title="Expected output" +$ meshtastic --info +Connected to radio +... +Channels: + PRIMARY psk=default { "modemConfig": "Bw125Cr48Sf4096", "psk": "AQ==" } + SECONDARY psk=secret { "psk": "HW7E3nMbiNbvr6MhsDonLCmj7eSAhttzjbIx/r5OQmg=", "name": "testing" } +Primary channel URL: https://www.meshtastic.org/d/#CgUYAyIBAQ +Complete URL (includes all channels): https://www.meshtastic.org/d/#CgUYAyIBAQopIiAdbsTecxuI1u-voyGwOicsKaPt5ICG23ONsjH-vk5CaCoFYWRtaW4 +``` + +Secondary channels can be deleted by specifying their index, otherwise ch-del will attempt to delete channel index 0 + +```bash title="Deleting a secondary channel" +$ meshtastic --ch-index 1 --ch-del +Connected to radio +Deleting channel 1 +``` From 9321b34ebe09fc3dd7a38268eedd337139821ccd Mon Sep 17 00:00:00 2001 From: Mike Kinney Date: Sat, 25 Dec 2021 22:40:25 -0800 Subject: [PATCH 23/24] update docs on how to manually build Meshtastic-device --- docs/developers/build.md | 41 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/docs/developers/build.md b/docs/developers/build.md index 7e45658b..3b5aad98 100644 --- a/docs/developers/build.md +++ b/docs/developers/build.md @@ -24,4 +24,43 @@ This project uses the simple PlatformIO build system. PlatformIO is an extension :::note To get a clean build you may have to delete the auto-generated file `./.vscode/c_cpp_properties.json`, close and re-open Visual Studio and WAIT until the file is auto-generated before compiling again. -::: \ No newline at end of file +::: + +## Manual Installation on Linux +1. On a linux distro (like Ubuntu), ensure you have pre-requisites installed: + +``` +sudo apt-get update +sudo apt-get install python3 g++ zip +``` + +2. Install platformio (which is usually via wget/curl command). + +``` +wget https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py -O get-platformio.py +chmod +x get-platformio.py +python3 get-platformio.py +``` + +3. Clone the repo https://github.com/meshtastic/Meshtastic-device + +4. Change into the Meshtastic-device and then download submodules + +``` +cd Meshtastic-device +git submodule update --init --recursive +``` + +5. Activate the Platformio python virtual environment + +``` +source ~/.platformio/penv/bin/activate +``` + +6. Build everything (optionally just build what you really need by editing platformio.ini) + +``` +./bin/build-all.sh +``` + +7. See the newly built bits in release/archive/firmware-1.2.49.XXX.zip (where XXX is the git commit) From d0b06f4b7390df1fc77bb048ecee7eaa0265db9b Mon Sep 17 00:00:00 2001 From: Mike Kinney Date: Sun, 26 Dec 2021 12:06:27 -0800 Subject: [PATCH 24/24] add details to some dev pages --- docs/developers/build.md | 10 ++++++++++ docs/developers/overview.md | 32 ++++++++++++++++++++++++++++---- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/docs/developers/build.md b/docs/developers/build.md index 3b5aad98..dec9291d 100644 --- a/docs/developers/build.md +++ b/docs/developers/build.md @@ -51,6 +51,16 @@ cd Meshtastic-device git submodule update --init --recursive ``` +Note: If you get an error like this: + +``` +Compiling .pio/build/rak4631_5005/src/plugins/PositionPlugin.cpp.o +src/nrf52/NRF52CryptoEngine.cpp:3:10: fatal error: ocrypto_aes_ctr.h: No such file or directory +``` + +then you need to run that submodule command from the main Meshtastic-device directory. + + 5. Activate the Platformio python virtual environment ``` diff --git a/docs/developers/overview.md b/docs/developers/overview.md index 6f15bd57..98790487 100644 --- a/docs/developers/overview.md +++ b/docs/developers/overview.md @@ -6,19 +6,38 @@ slug: /developers --- # How to Help -Meshtastic is a team of volunteers and as such there is always plenty of ways to help. This project gets great contributions from people in their off hours and those contributers work on the features they are interested in. It is a very open and welcoming developer community and we are always looking for help improving Meshtastic. +Meshtastic is a team of volunteers and as such there is always plenty of ways to help. This project gets great contributions from people in their off hours. Those contributors work on the features they are interested in. It is a very open and welcoming developer community and we are always looking for help improving Meshtastic. -Here are some ways to help and people to connect with if you have an interest in helping with development. +* If you're a developer, there's plenty stuff to do. Dig in! +* If you're interacting with Meshtastic radios, we could use help with testing, documenting and providing feedback. +* If you're into Web Development, check out the different web repos. +* If you're into Kotlin and Android, check out the link to the repo below. +* If you're into Python, check out the link to the repo below +* If you're into Ham Radio and LoRa, then this is a great project for you! +* ... basically... we would love to have your help and feedback -## Plugins +There are several developers, testers, and active users on [Discord](https://discord.gg/UQJ5QuM7vq). + +There are many technologies (and repositories) used in creating the Meshtastic ecosystem. Below is a breakdown: + +## Protocol buffers +Most communication and interactions happen with protocol buffers. The [Meshtastic-protobufs](https://github.com/meshtastic/Meshtastic-protobufs) repo is where all of the protocol buffer changes happen. See the [Protobuf API Reference](https://meshtastic.org/docs/developers/protobufs/api) for more details. ## Firmware +The [Meshtastic-device](https://github.com/meshtastic/Meshtastic-device) is where all of the firmware development happens. This is where the code for the esp32 and nrf52 based devices to interact is developed. It is mainly C and C++ code.Think Arduino. It is where the first level of hardware interaction begins and ends. + +## Plugins +[Plugins](https://meshtastic.org/docs/software/plugins/) are also implemented mainly in the Meshtastic-device repo above. Typically, you would add functionality in the protobufs repo and the device repo to implement plugin functionality. You probably also want to have some client/device use/interact with the plugin and that is where the Device support comes into play. ## Device Support +The [Meshtastic-python](https://github.com/meshtastic/Meshtastic-python) is typically where the first device interaction takes place, but that is not a requirement. This repo has a cli that allows you to interact with most functionality with the devices. This python library can also be consumed for other applications. See [Community applications](https://meshtastic.org/docs/software/community/community-overview) for other Meshtastic applications. ## Web Application +The [Meshtastic-web](https://github.com/meshtastic/meshtastic-web) is where the hosted web server on the esp32 devices in Typescript is developed. See the [Web interface overview](https://meshtastic.org/docs/software/web/web-app-software) for more details. -@sachaw has been making tons of progress on the web app and would love help with +The [meshtastic.js](https://github.com/meshtastic/meshtastic.js) is a javascript library that provides an interface for Meshtastic devices. + +@sachaw has been making tons of progress on the web app and would love help with: * Saving of preferences * Better loading state indicators @@ -26,5 +45,10 @@ Here are some ways to help and people to connect with if you have an interest in * Various plugin support ## Phone Apps +There are two phone apps that interact with the Meshtastic devices: + +* The [Meshtastic-Android](https://github.com/meshtastic/Meshtastic-Android) repo contains the Kotlin code for Android based interactions with Meshtastic devices. See [here](https://meshtastic.org/docs/developers/android/build-app) for how to build/create a development environment for the Meshtastic Android App. +* The iOS app is in the process of a complete re-write in Swift and will have the new repo published soon. Note: There are a couple of earlier implementations. ## Documentation +This website is in the [Meshtastic](https://github.com/meshtastic/Meshtastic) repository.