diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 6f0f670b58..ce6200e9b7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -27,6 +27,20 @@ jobs: secrets: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + publish-storybook-pr: + name: Publish Storybook to `pr/${{ github.event.number }}` folder + # needs: lint-build-test + if: ${{ github.event_name == 'pull_request' }} + permissions: + contents: write + uses: ./.github/workflows/publish-github-pages.yml + with: + build_script: yarn workspace @metamask/snaps-sdk build && yarn workspace @metamask/snaps-storybook build && yarn workspace @metamask/snaps-sdk build:storybook + publish_dir: ./packages/snaps-sdk/storybook-static + destination_dir: storybook/pr/${{ github.event.number }} + secrets: + PUBLISH_PAGES_TOKEN: ${{ secrets.PUBLISH_PAGES_TOKEN }} + publish-staging-simulator: name: Publish Snaps Simulator to `staging` folder needs: lint-build-test diff --git a/.gitignore b/.gitignore index a55eda1e97..a749f98688 100644 --- a/.gitignore +++ b/.gitignore @@ -78,3 +78,6 @@ packages/examples/examples/webpack/index.html # Ubuntu package files .deb + +# Storybook +storybook-static diff --git a/packages/examples/packages/bip32/snap.manifest.json b/packages/examples/packages/bip32/snap.manifest.json index 50e29b8f16..acd9302f62 100644 --- a/packages/examples/packages/bip32/snap.manifest.json +++ b/packages/examples/packages/bip32/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "cG78m4B2d8yHgKq1rKrZsbGZApWbJyd3MNoBPGcjKUQ=", + "shasum": "NomZRuPMP0ibDai9Trz+ShTP52To2ogo+2In7fVh+J0=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/bip44/snap.manifest.json b/packages/examples/packages/bip44/snap.manifest.json index 0edcccd845..86c7ee0415 100644 --- a/packages/examples/packages/bip44/snap.manifest.json +++ b/packages/examples/packages/bip44/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "YvyYRUgAVoeYPTzZRjxKRYNAjJe5usTDyqQkKbGTFTo=", + "shasum": "EH5AWIvAGQuFsCEZCLgskmdExwwr8spTTvvEHZ4RiQA=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/browserify-plugin/snap.manifest.json b/packages/examples/packages/browserify-plugin/snap.manifest.json index 0b81df8052..1e6c457961 100644 --- a/packages/examples/packages/browserify-plugin/snap.manifest.json +++ b/packages/examples/packages/browserify-plugin/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "FQwKp8UTAOjE30njzUvGS2OElCud9Hyj2+xkfRGeqIk=", + "shasum": "AK0uWGbXpxl+kTJd1u9ZC7yf92dM3sTH75YPJNWyveE=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/browserify/snap.manifest.json b/packages/examples/packages/browserify/snap.manifest.json index 8a1474a74b..8b5fd8e60d 100644 --- a/packages/examples/packages/browserify/snap.manifest.json +++ b/packages/examples/packages/browserify/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "VglMoBJGhWpq4P+2P0DXMHVL3oF5+W2D4tlJtH8kdvw=", + "shasum": "ktCtBx1p0e3agXkJG2iBqZeynvnPKInXNTUVJpKs8M8=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/client-status/snap.manifest.json b/packages/examples/packages/client-status/snap.manifest.json index 5a1fd660dc..5d7a6c256f 100644 --- a/packages/examples/packages/client-status/snap.manifest.json +++ b/packages/examples/packages/client-status/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "FHyz1K8TqeKyGniGR77kZFwRcm7IkjBuQ1zBifDPHvo=", + "shasum": "ROES6RVy9ejIET+XIfSp/yinhE4VUDZaoKQgdHKev6Y=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/cronjobs/snap.manifest.json b/packages/examples/packages/cronjobs/snap.manifest.json index 2b571e309e..2a9f626886 100644 --- a/packages/examples/packages/cronjobs/snap.manifest.json +++ b/packages/examples/packages/cronjobs/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "9bT28snShrLQ7/OHDWJT6qDXdlc/asYH7x8o6zqfuUo=", + "shasum": "/YIFmpd6e+pYp6Aa/c9Iv8gBSRGtLeOMcJzjh+/6GUw=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/dialogs/snap.manifest.json b/packages/examples/packages/dialogs/snap.manifest.json index d65a4cf207..483c35e3d8 100644 --- a/packages/examples/packages/dialogs/snap.manifest.json +++ b/packages/examples/packages/dialogs/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "bozHl8e7Md1GuWvLOXtPbKGejiE2gBOGV0cIg6M7zFc=", + "shasum": "j8iFb7SisanOBPMem7ZVCFv6Lf/2r6x3HKLxh7uDWNo=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/ethereum-provider/snap.manifest.json b/packages/examples/packages/ethereum-provider/snap.manifest.json index 6ddcc0cbeb..8fc7a3fc64 100644 --- a/packages/examples/packages/ethereum-provider/snap.manifest.json +++ b/packages/examples/packages/ethereum-provider/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "AKvlBnNv0PrE8VfPCdxMmbTMq451QKo9ggsERIMPEZc=", + "shasum": "owUFr66MLBemx+4zCreyyR3I2UHdFXkMLTQBjwFC2B0=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/ethers-js/snap.manifest.json b/packages/examples/packages/ethers-js/snap.manifest.json index ee235d0c31..6fdebcc052 100644 --- a/packages/examples/packages/ethers-js/snap.manifest.json +++ b/packages/examples/packages/ethers-js/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "60LZXNvbDxyYnWy5qP43Tj8UZTfnmUsjItCOpnLTju0=", + "shasum": "R6lbz4kTEsEac5uHl7VhS8sFmxLRCWQ18XxFxb35w8o=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/file-upload/snap.manifest.json b/packages/examples/packages/file-upload/snap.manifest.json index 49e5585e57..fad9fabc3d 100644 --- a/packages/examples/packages/file-upload/snap.manifest.json +++ b/packages/examples/packages/file-upload/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "E6A+dO1EcNp9XYm9M0yEUafFXRM0W72ylmOhbA9FFio=", + "shasum": "EVttNDW8DakMBmMZG24BQLLkkVJzRva+WsbvxkUzbB0=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/get-entropy/snap.manifest.json b/packages/examples/packages/get-entropy/snap.manifest.json index 591f066658..c0c340b1d5 100644 --- a/packages/examples/packages/get-entropy/snap.manifest.json +++ b/packages/examples/packages/get-entropy/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "GFAjUWW8q9iX+2J/wKFlVRjq1oJ377NW5qSVTbkYtIQ=", + "shasum": "Z913E2CFpHKz56E9QxjXUgNvTAJqi6kV+JMzibTVV20=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/get-file/snap.manifest.json b/packages/examples/packages/get-file/snap.manifest.json index 2903902c62..43ca5ff073 100644 --- a/packages/examples/packages/get-file/snap.manifest.json +++ b/packages/examples/packages/get-file/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "37wMtBqKrmWF3CUdyQHZ3Ey86NpGnffqIq6GnqTf+Ro=", + "shasum": "cbQ++/UaPBWLbJ0P7OR/CMPPBVXbppHZ6G9LpjvGre4=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/home-page/snap.manifest.json b/packages/examples/packages/home-page/snap.manifest.json index 44d22d2841..3a2b334374 100644 --- a/packages/examples/packages/home-page/snap.manifest.json +++ b/packages/examples/packages/home-page/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "9eJQJL4e2McSiHzayvby/1zLdHvf7Uc9ppUUw7v+rHQ=", + "shasum": "icw5/1FfzcEwDwo5ckH9j2RZrwqsikbfHfZFoeOtl9U=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/images/snap.manifest.json b/packages/examples/packages/images/snap.manifest.json index bf2054eeb4..0c4f45ea7d 100644 --- a/packages/examples/packages/images/snap.manifest.json +++ b/packages/examples/packages/images/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "oyaKZ7cbZisTYS6p9+ol9+tbjfq2Yly3G5UDvIwDLOQ=", + "shasum": "9T6WRWeazyc1/0yEVyRnM5jNnOmQJ+ghGlPpJG34ns8=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/interactive-ui/snap.manifest.json b/packages/examples/packages/interactive-ui/snap.manifest.json index f0440bb7ec..d0425b5b14 100644 --- a/packages/examples/packages/interactive-ui/snap.manifest.json +++ b/packages/examples/packages/interactive-ui/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "LfydCMo1VRRXKdciizK7HPLso/tVufqM0JGpWSts/os=", + "shasum": "OsXMcZoDQl7iI5MsPjP3BNja8bwmqx0KWeerhgu9uv4=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/invoke-snap/packages/consumer-signer/snap.manifest.json b/packages/examples/packages/invoke-snap/packages/consumer-signer/snap.manifest.json index 5f9b25affd..a1a84232ee 100644 --- a/packages/examples/packages/invoke-snap/packages/consumer-signer/snap.manifest.json +++ b/packages/examples/packages/invoke-snap/packages/consumer-signer/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "8MoLqit0ldP9dXby0k6nOsNPcfTVhHFwD+NDkGTLWpE=", + "shasum": "6i0cbxc4InNv5sqlovvEGqWS/LEOxOo1tltnxXwSmAA=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/invoke-snap/packages/core-signer/snap.manifest.json b/packages/examples/packages/invoke-snap/packages/core-signer/snap.manifest.json index 3afeb23165..8c524d939f 100644 --- a/packages/examples/packages/invoke-snap/packages/core-signer/snap.manifest.json +++ b/packages/examples/packages/invoke-snap/packages/core-signer/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "dd2RRHpmyhOtK2A1mWqgzYz+AI/UG2gyFWUsuCjW/QY=", + "shasum": "jzu42bAEI/u9ZvL5Bs2oSQjpbQqCwECra7Gl2xbENq8=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/json-rpc/snap.manifest.json b/packages/examples/packages/json-rpc/snap.manifest.json index cb70769db2..00b91384aa 100644 --- a/packages/examples/packages/json-rpc/snap.manifest.json +++ b/packages/examples/packages/json-rpc/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "wXoG3PQ8lhJu5MCXOoFXPd/eEzrkMzdCYNL5YKCzOXg=", + "shasum": "AcAtgVSzcnGdQ9N8Ux+7+WosCTpJce4WtGoWR9i9p3g=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/jsx/snap.manifest.json b/packages/examples/packages/jsx/snap.manifest.json index 52164100bc..3c4c43ef48 100644 --- a/packages/examples/packages/jsx/snap.manifest.json +++ b/packages/examples/packages/jsx/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "8CWhVcRMrN0tSMtxV0UXNvvS6kwVVJ+xJxADZ1AMkxY=", + "shasum": "Uxv/s5tfdz38+IaOPEftGQ2iLey0q+82YWAdU2yRams=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/lifecycle-hooks/snap.manifest.json b/packages/examples/packages/lifecycle-hooks/snap.manifest.json index 05842992da..63295b22ad 100644 --- a/packages/examples/packages/lifecycle-hooks/snap.manifest.json +++ b/packages/examples/packages/lifecycle-hooks/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "+bfsURFNxni7MV/98u6zHjp9QgzWIAXI2wud9ClfejM=", + "shasum": "8wTZindSCjvNZFF4Di6tX16RmrGcEdZf6/J1rzkwNXk=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/localization/snap.manifest.json b/packages/examples/packages/localization/snap.manifest.json index 4d51936f4f..bf04b75fd5 100644 --- a/packages/examples/packages/localization/snap.manifest.json +++ b/packages/examples/packages/localization/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "U5POJ0kzznk+u1A4xxgFQX3LIU8QoVUqYYUylOUmUhs=", + "shasum": "xvXSjRUQEzNRtv/jz0eh/xNqBdBeZZZKYMO5+Taa57I=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/manage-state/snap.manifest.json b/packages/examples/packages/manage-state/snap.manifest.json index 5c670ce520..9e79e4f3aa 100644 --- a/packages/examples/packages/manage-state/snap.manifest.json +++ b/packages/examples/packages/manage-state/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "nP0QOJ+vurTLPgKtiYq2zWMxoBBfgZ4VkcQ8svyU1Sk=", + "shasum": "0hMR95zMr0Ot8EhfdigAdncOHAreBEEeEQzjTPhh0+M=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/network-access/snap.manifest.json b/packages/examples/packages/network-access/snap.manifest.json index 592b6d22ac..5430c6f511 100644 --- a/packages/examples/packages/network-access/snap.manifest.json +++ b/packages/examples/packages/network-access/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "VSXdhOsUAKupm4JXWCZcQ4HFKNrmxD3LySAmJlRQkGQ=", + "shasum": "acLRltL+gBNh+GBcl9lAAlGMzQlh1+lVEfKDuVlnO4Y=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/notifications/snap.manifest.json b/packages/examples/packages/notifications/snap.manifest.json index 249d61be3f..80b94d5f05 100644 --- a/packages/examples/packages/notifications/snap.manifest.json +++ b/packages/examples/packages/notifications/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "AP1xFEuyMDWaiey+kkUzjlMl1tt4ey26cntnHHNix/s=", + "shasum": "yG4JOx+Robak4/UMlxagPmNui1JcWxG1Bl7o3uMhmNM=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/rollup-plugin/snap.manifest.json b/packages/examples/packages/rollup-plugin/snap.manifest.json index b2e96e7812..d30a2ea722 100644 --- a/packages/examples/packages/rollup-plugin/snap.manifest.json +++ b/packages/examples/packages/rollup-plugin/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "R6xONAf4IA5HXDU2oyL732pa5T+Nhc6idkEr9Zo/fDo=", + "shasum": "oh7TagRHUSLE5KbcnWmRlyUsPQpLq8F1BXxHaVv6lUA=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/signature-insights/snap.manifest.json b/packages/examples/packages/signature-insights/snap.manifest.json index 3b9b2464fb..2f9af1ee03 100644 --- a/packages/examples/packages/signature-insights/snap.manifest.json +++ b/packages/examples/packages/signature-insights/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "nOHygj95R/T+NtgyXLdS5YNxom7bflJoLGaSqAiLZNU=", + "shasum": "CfuiBXwLR1+oiIytBM+mpVBfe42PvA5M9XLeaHKXNsw=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/transaction-insights/snap.manifest.json b/packages/examples/packages/transaction-insights/snap.manifest.json index d5c487b6ef..19d5517278 100644 --- a/packages/examples/packages/transaction-insights/snap.manifest.json +++ b/packages/examples/packages/transaction-insights/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "z18RzBaiNCS+tdOltE3CD6s/S+nTZTVHjLotmaVgKN8=", + "shasum": "r+pwBkDbfvH4pUuB8qTx9P1lHUqSgRKDOkKc4VKj0Kc=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/wasm/snap.manifest.json b/packages/examples/packages/wasm/snap.manifest.json index 3498ce2b03..f33ec12d2e 100644 --- a/packages/examples/packages/wasm/snap.manifest.json +++ b/packages/examples/packages/wasm/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "ZQJV6BNeSLTrnxxnbT+P+I1O9/novFlZcKVJuTxnRRM=", + "shasum": "wFoNbBcqit/JLNuDO6ktG3Pk9/qSCyVIRkjmRf7cMR0=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/webpack-plugin/snap.manifest.json b/packages/examples/packages/webpack-plugin/snap.manifest.json index 2498e0f7bd..845419b9bd 100644 --- a/packages/examples/packages/webpack-plugin/snap.manifest.json +++ b/packages/examples/packages/webpack-plugin/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "nXyQsrdxb0igyATQImUC4UyAw598ldkJCRuu/OZTvss=", + "shasum": "Y62p+2izgaCjaRg6FngcL42nIPT+GZ0q0dxvcyh3NR8=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/snaps-browserify-plugin/src/__snapshots__/plugin.test.ts.snap b/packages/snaps-browserify-plugin/src/__snapshots__/plugin.test.ts.snap index 31390990d2..e3dbf604df 100644 --- a/packages/snaps-browserify-plugin/src/__snapshots__/plugin.test.ts.snap +++ b/packages/snaps-browserify-plugin/src/__snapshots__/plugin.test.ts.snap @@ -108,7 +108,7 @@ exports[`plugin generates a source map 1`] = ` }; }, {}] }, {}, [1]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyIiwiZSIsIm4iLCJ0IiwibyIsImkiLCJmIiwiYyIsInJlcXVpcmUiLCJ1IiwiYSIsIkVycm9yIiwiY29kZSIsInAiLCJleHBvcnRzIiwiY2FsbCIsImxlbmd0aCIsIm1vZHVsZSIsIm9uUnBjUmVxdWVzdCIsInJlcXVlc3QiLCJjb25zb2xlIiwibG9nIiwibWV0aG9kIiwiaWQiXSwic291cmNlcyI6WyIuLi8uLi9ub2RlX21vZHVsZXMvYnJvd3Nlci1wYWNrL19wcmVsdWRlLmpzIiwiX3N0cmVhbV8wLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSxuLHQpe2Z1bmN0aW9uIG8oaSxmKXtpZighbltpXSl7aWYoIWVbaV0pe3ZhciBjPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWYmJmMpcmV0dXJuIGMoaSwhMCk7aWYodSlyZXR1cm4gdShpLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2krXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBwPW5baV09e2V4cG9ydHM6e319O2VbaV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24ocil7dmFyIG49ZVtpXVsxXVtyXTtyZXR1cm4gbyhufHxyKX0scCxwLmV4cG9ydHMscixlLG4sdCl9cmV0dXJuIG5baV0uZXhwb3J0c31mb3IodmFyIHU9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxpPTA7aTx0Lmxlbmd0aDtpKyspbyh0W2ldKTtyZXR1cm4gb31yZXR1cm4gcn0pKCkiLCJcbiAgbW9kdWxlLmV4cG9ydHMub25ScGNSZXF1ZXN0ID0gKHsgcmVxdWVzdCB9KSA9PiB7XG4gICAgY29uc29sZS5sb2coXCJIZWxsbywgd29ybGQhXCIpO1xuXG4gICAgY29uc3QgeyBtZXRob2QsIGlkIH0gPSByZXF1ZXN0O1xuICAgIHJldHVybiBtZXRob2QgKyBpZDtcbiAgfTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7RUFBQSxTQUFBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQTtJQUFBLFNBQUFDLEVBQUFDLENBQUEsRUFBQUMsQ0FBQTtNQUFBLEtBQUFKLENBQUEsQ0FBQUcsQ0FBQTtRQUFBLEtBQUFKLENBQUEsQ0FBQUksQ0FBQTtVQUFBLElBQUFFLENBQUEsd0JBQUFDLE9BQUEsSUFBQUEsT0FBQTtVQUFBLEtBQUFGLENBQUEsSUFBQUMsQ0FBQSxTQUFBQSxDQUFBLENBQUFGLENBQUE7VUFBQSxJQUFBSSxDQUFBLFNBQUFBLENBQUEsQ0FBQUosQ0FBQTtVQUFBLElBQUFLLENBQUEsT0FBQUMsS0FBQSwwQkFBQU4sQ0FBQTtVQUFBLE1BQUFLLENBQUEsQ0FBQUUsSUFBQSx1QkFBQUYsQ0FBQTtRQUFBO1FBQUEsSUFBQUcsQ0FBQSxHQUFBWCxDQUFBLENBQUFHLENBQUE7VUFBQVMsT0FBQTtRQUFBO1FBQUFiLENBQUEsQ0FBQUksQ0FBQSxLQUFBVSxJQUFBLENBQUFGLENBQUEsQ0FBQUMsT0FBQSxZQUFBZCxDQUFBO1VBQUEsSUFBQUUsQ0FBQSxHQUFBRCxDQUFBLENBQUFJLENBQUEsS0FBQUwsQ0FBQTtVQUFBLE9BQUFJLENBQUEsQ0FBQUYsQ0FBQSxJQUFBRixDQUFBO1FBQUEsR0FBQWEsQ0FBQSxFQUFBQSxDQUFBLENBQUFDLE9BQUEsRUFBQWQsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQTtNQUFBO01BQUEsT0FBQUQsQ0FBQSxDQUFBRyxDQUFBLEVBQUFTLE9BQUE7SUFBQTtJQUFBLFNBQUFMLENBQUEsd0JBQUFELE9BQUEsSUFBQUEsT0FBQSxFQUFBSCxDQUFBLE1BQUFBLENBQUEsR0FBQUYsQ0FBQSxDQUFBYSxNQUFBLEVBQUFYLENBQUEsSUFBQUQsQ0FBQSxDQUFBRCxDQUFBLENBQUFFLENBQUE7SUFBQSxPQUFBRCxDQUFBO0VBQUE7RUFBQSxPQUFBSixDQUFBO0FBQUE7RUFBQSxjQUFBUSxPQUFBLEVBQUFTLE1BQUEsRUFBQUgsT0FBQTtJQ0NBRyxNQUFBLENBQUFILE9BQUEsQ0FBQUksWUFBQTtNQUFBQztJQUFBO01BQ0FDLE9BQUEsQ0FBQUMsR0FBQTtNQUVBO1FBQUFDLE1BQUE7UUFBQUM7TUFBQSxJQUFBSixPQUFBO01BQ0EsT0FBQUcsTUFBQSxHQUFBQyxFQUFBO0lBQ0EifQ==" +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyIiwiZSIsIm4iLCJ0IiwibyIsImkiLCJmIiwiYyIsInJlcXVpcmUiLCJ1IiwiYSIsIkVycm9yIiwiY29kZSIsInAiLCJleHBvcnRzIiwiY2FsbCIsImxlbmd0aCIsIm1vZHVsZSIsIm9uUnBjUmVxdWVzdCIsInJlcXVlc3QiLCJjb25zb2xlIiwibG9nIiwibWV0aG9kIiwiaWQiXSwic291cmNlcyI6WyIuLi8uLi9ub2RlX21vZHVsZXMvYnJvd3Nlci1wYWNrL19wcmVsdWRlLmpzIiwiX3N0cmVhbV8wLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSxuLHQpe2Z1bmN0aW9uIG8oaSxmKXtpZighbltpXSl7aWYoIWVbaV0pe3ZhciBjPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWYmJmMpcmV0dXJuIGMoaSwhMCk7aWYodSlyZXR1cm4gdShpLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2krXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBwPW5baV09e2V4cG9ydHM6e319O2VbaV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24ocil7dmFyIG49ZVtpXVsxXVtyXTtyZXR1cm4gbyhufHxyKX0scCxwLmV4cG9ydHMscixlLG4sdCl9cmV0dXJuIG5baV0uZXhwb3J0c31mb3IodmFyIHU9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxpPTA7aTx0Lmxlbmd0aDtpKyspbyh0W2ldKTtyZXR1cm4gb31yZXR1cm4gcn0pKCkiLCJcbiAgbW9kdWxlLmV4cG9ydHMub25ScGNSZXF1ZXN0ID0gKHsgcmVxdWVzdCB9KSA9PiB7XG4gICAgY29uc29sZS5sb2coXCJIZWxsbywgd29ybGQhXCIpO1xuXG4gICAgY29uc3QgeyBtZXRob2QsIGlkIH0gPSByZXF1ZXN0O1xuICAgIHJldHVybiBtZXRob2QgKyBpZDtcbiAgfTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7RUFBQSxTQUFBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQTtJQUFBLFNBQUFDLEVBQUFDLENBQUEsRUFBQUMsQ0FBQTtNQUFBLEtBQUFKLENBQUEsQ0FBQUcsQ0FBQTtRQUFBLEtBQUFKLENBQUEsQ0FBQUksQ0FBQTtVQUFBLElBQUFFLENBQUEsd0JBQUFDLE9BQUEsSUFBQUEsT0FBQTtVQUFBLEtBQUFGLENBQUEsSUFBQUMsQ0FBQSxTQUFBQSxDQUFBLENBQUFGLENBQUE7VUFBQSxJQUFBSSxDQUFBLFNBQUFBLENBQUEsQ0FBQUosQ0FBQTtVQUFBLElBQUFLLENBQUEsT0FBQUMsS0FBQSwwQkFBQU4sQ0FBQTtVQUFBLE1BQUFLLENBQUEsQ0FBQUUsSUFBQSx1QkFBQUYsQ0FBQTtRQUFBO1FBQUEsSUFBQUcsQ0FBQSxHQUFBWCxDQUFBLENBQUFHLENBQUE7VUFBQVMsT0FBQTtRQUFBO1FBQUFiLENBQUEsQ0FBQUksQ0FBQSxLQUFBVSxJQUFBLENBQUFGLENBQUEsQ0FBQUMsT0FBQSxZQUFBZCxDQUFBO1VBQUEsSUFBQUUsQ0FBQSxHQUFBRCxDQUFBLENBQUFJLENBQUEsS0FBQUwsQ0FBQTtVQUFBLE9BQUFJLENBQUEsQ0FBQUYsQ0FBQSxJQUFBRixDQUFBO1FBQUEsR0FBQWEsQ0FBQSxFQUFBQSxDQUFBLENBQUFDLE9BQUEsRUFBQWQsQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQTtNQUFBO01BQUEsT0FBQUQsQ0FBQSxDQUFBRyxDQUFBLEVBQUFTLE9BQUE7SUFBQTtJQUFBLFNBQUFMLENBQUEsd0JBQUFELE9BQUEsSUFBQUEsT0FBQSxFQUFBSCxDQUFBLE1BQUFBLENBQUEsR0FBQUYsQ0FBQSxDQUFBYSxNQUFBLEVBQUFYLENBQUEsSUFBQUQsQ0FBQSxDQUFBRCxDQUFBLENBQUFFLENBQUE7SUFBQSxPQUFBRCxDQUFBO0VBQUE7RUFBQSxPQUFBSixDQUFBO0FBQUE7RUFBQSxjQUFBUSxPQUFBLEVBQUFTLE1BQUEsRUFBQUgsT0FBQTtJQ0NBRyxNQUFBLENBQUFILE9BQUEsQ0FBQUksWUFBQTtNQUFBQztJQUFBO01BQ0FDLE9BQUEsQ0FBQUMsR0FBQTtNQUVBO1FBQUFDLE1BQUE7UUFBQUM7TUFBQSxJQUFBSixPQUFBO01BQ0EsT0FBQUcsTUFBQSxHQUFBQyxFQUFBO0lBQ0EiLCJpZ25vcmVMaXN0IjpbXX0=" `; exports[`plugin processes files using Browserify 1`] = ` diff --git a/packages/snaps-cli/.depcheckrc.json b/packages/snaps-cli/.depcheckrc.json index 7b43678e53..3ff0569a63 100644 --- a/packages/snaps-cli/.depcheckrc.json +++ b/packages/snaps-cli/.depcheckrc.json @@ -11,6 +11,7 @@ "assert", "browser-pack", "buffer", + "core-js-compat", "eslint-config-*", "eslint-plugin-*", "events", diff --git a/packages/snaps-cli/src/__mocks__/fs.ts b/packages/snaps-cli/src/__mocks__/fs.ts index 47f3c10b0d..c77915752d 100644 --- a/packages/snaps-cli/src/__mocks__/fs.ts +++ b/packages/snaps-cli/src/__mocks__/fs.ts @@ -9,6 +9,7 @@ const { join, dirname } = jest.requireActual('path'); // to provide the files it's looking for. const BROWSERIFY_FILES = [ /* eslint-disable n/no-extraneous-require */ + join(dirname(require.resolve('core-js-compat')), 'data.json'), join(dirname(require.resolve('is-core-module/package.json')), 'core.json'), join(dirname(require.resolve('browser-pack/package.json')), '_prelude.js'), /* eslint-enable n/no-extraneous-require */ diff --git a/packages/snaps-execution-environments/lavamoat/build-system/policy.json b/packages/snaps-execution-environments/lavamoat/build-system/policy.json index f0cf64f764..e58d79bf87 100644 --- a/packages/snaps-execution-environments/lavamoat/build-system/policy.json +++ b/packages/snaps-execution-environments/lavamoat/build-system/policy.json @@ -22,6 +22,7 @@ }, "packages": { "@babel/core>@ampproject/remapping": true, + "@babel/core>@babel/code-frame": true, "@babel/core>@babel/generator": true, "@babel/core>@babel/helper-compilation-targets": true, "@babel/core>@babel/helper-module-transforms": true, @@ -35,7 +36,6 @@ "depcheck>@babel/parser": true, "depcheck>@babel/traverse": true, "depcheck>json5": true, - "lavamoat>@babel/code-frame": true, "tsup>debug": true } }, @@ -57,6 +57,68 @@ "tsup>sucrase>@jridgewell/gen-mapping>@jridgewell/sourcemap-codec": true } }, + "@babel/core>@babel/code-frame": { + "globals": { + "console.warn": true, + "process": true + }, + "packages": { + "@babel/core>@babel/code-frame>@babel/highlight": true, + "tsup>postcss>picocolors": true + } + }, + "@babel/core>@babel/code-frame>@babel/highlight": { + "globals": { + "process": true + }, + "packages": { + "@babel/core>@babel/code-frame>@babel/highlight>chalk": true, + "lavamoat>@babel/highlight>@babel/helper-validator-identifier": true, + "lavamoat>@babel/highlight>js-tokens": true, + "tsup>postcss>picocolors": true + } + }, + "@babel/core>@babel/code-frame>@babel/highlight>chalk": { + "globals": { + "process.env.TERM": true, + "process.platform": true + }, + "packages": { + "@babel/core>@babel/code-frame>@babel/highlight>chalk>ansi-styles": true, + "@babel/core>@babel/code-frame>@babel/highlight>chalk>escape-string-regexp": true, + "@babel/core>@babel/code-frame>@babel/highlight>chalk>supports-color": true + } + }, + "@babel/core>@babel/code-frame>@babel/highlight>chalk>ansi-styles": { + "packages": { + "@babel/core>@babel/code-frame>@babel/highlight>chalk>ansi-styles>color-convert": true + } + }, + "@babel/core>@babel/code-frame>@babel/highlight>chalk>ansi-styles>color-convert": { + "packages": { + "@babel/core>@babel/code-frame>@babel/highlight>chalk>ansi-styles>color-convert>color-name": true + } + }, + "@babel/core>@babel/code-frame>@babel/highlight>chalk>supports-color": { + "builtin": { + "os.release": true + }, + "globals": { + "process.env": true, + "process.platform": true, + "process.stderr": true, + "process.stdout": true, + "process.versions.node.split": true + }, + "packages": { + "@babel/core>@babel/code-frame>@babel/highlight>chalk>supports-color>has-flag": true + } + }, + "@babel/core>@babel/code-frame>@babel/highlight>chalk>supports-color>has-flag": { + "globals": { + "process.argv": true + } + }, "@babel/core>@babel/generator": { "globals": { "console.error": true, @@ -95,6 +157,7 @@ "path.basename": true, "path.dirname": true, "path.join": true, + "path.relative": true, "path.resolve": true }, "globals": { @@ -156,9 +219,9 @@ }, "@babel/core>@babel/template": { "packages": { + "@babel/core>@babel/code-frame": true, "@babel/core>@babel/types": true, - "depcheck>@babel/parser": true, - "lavamoat>@babel/code-frame": true + "depcheck>@babel/parser": true } }, "@babel/core>@babel/types": { @@ -187,6 +250,9 @@ } }, "@babel/preset-env": { + "builtin": { + "fs.readFileSync": true + }, "globals": { "console.log": true, "console.warn": true, @@ -195,12 +261,13 @@ }, "packages": { "@babel/core>@babel/helper-compilation-targets": true, - "@babel/core>@babel/types": true, "@babel/preset-env>@babel/compat-data": true, "@babel/preset-env>@babel/helper-plugin-utils": true, "@babel/preset-env>@babel/helper-validator-option": true, + "@babel/preset-env>@babel/plugin-bugfix-firefox-class-in-computed-class-key": true, "@babel/preset-env>@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": true, "@babel/preset-env>@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": true, + "@babel/preset-env>@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": true, "@babel/preset-env>@babel/plugin-syntax-async-generators": true, "@babel/preset-env>@babel/plugin-syntax-class-properties": true, "@babel/preset-env>@babel/plugin-syntax-class-static-block": true, @@ -271,10 +338,15 @@ "@babel/preset-env>babel-plugin-polyfill-corejs2": true, "@babel/preset-env>babel-plugin-polyfill-corejs3": true, "@babel/preset-env>babel-plugin-polyfill-regenerator": true, - "@babel/preset-env>core-js-compat": true, "@babel/preset-env>semver": true } }, + "@babel/preset-env>@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "packages": { + "@babel/preset-env>@babel/helper-plugin-utils": true, + "depcheck>@babel/traverse>@babel/helper-environment-visitor": true + } + }, "@babel/preset-env>@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "packages": { "@babel/preset-env>@babel/helper-plugin-utils": true @@ -284,8 +356,15 @@ "packages": { "@babel/core": true, "@babel/preset-env>@babel/helper-plugin-utils": true, - "@babel/preset-env>@babel/plugin-transform-optional-chaining": true, - "@babel/preset-env>@babel/plugin-transform-spread>@babel/helper-skip-transparent-expression-wrappers": true + "@babel/preset-env>@babel/plugin-transform-for-of>@babel/helper-skip-transparent-expression-wrappers": true, + "@babel/preset-env>@babel/plugin-transform-optional-chaining": true + } + }, + "@babel/preset-env>@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "packages": { + "@babel/core": true, + "@babel/preset-env>@babel/helper-plugin-utils": true, + "depcheck>@babel/traverse>@babel/helper-environment-visitor": true } }, "@babel/preset-env>@babel/plugin-syntax-async-generators": { @@ -447,7 +526,6 @@ "@babel/core>@babel/helper-compilation-targets": true, "@babel/preset-env>@babel/helper-plugin-utils": true, "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-annotate-as-pure": true, - "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-optimise-call-expression": true, "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-replace-supers": true, "depcheck>@babel/traverse>@babel/helper-environment-visitor": true, "depcheck>@babel/traverse>@babel/helper-function-name": true, @@ -460,16 +538,11 @@ "@babel/core>@babel/types": true } }, - "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-optimise-call-expression": { - "packages": { - "@babel/core>@babel/types": true - } - }, "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-replace-supers": { "packages": { "@babel/core": true, - "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-optimise-call-expression": true, "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-replace-supers>@babel/helper-member-expression-to-functions": true, + "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-replace-supers>@babel/helper-optimise-call-expression": true, "depcheck>@babel/traverse>@babel/helper-environment-visitor": true } }, @@ -478,6 +551,11 @@ "@babel/core>@babel/types": true } }, + "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-replace-supers>@babel/helper-optimise-call-expression": { + "packages": { + "@babel/core>@babel/types": true + } + }, "@babel/preset-env>@babel/plugin-transform-computed-properties": { "packages": { "@babel/core": true, @@ -578,7 +656,13 @@ "@babel/preset-env>@babel/plugin-transform-for-of": { "packages": { "@babel/core": true, - "@babel/preset-env>@babel/helper-plugin-utils": true + "@babel/preset-env>@babel/helper-plugin-utils": true, + "@babel/preset-env>@babel/plugin-transform-for-of>@babel/helper-skip-transparent-expression-wrappers": true + } + }, + "@babel/preset-env>@babel/plugin-transform-for-of>@babel/helper-skip-transparent-expression-wrappers": { + "packages": { + "@babel/core>@babel/types": true } }, "@babel/preset-env>@babel/plugin-transform-function-name": { @@ -679,7 +763,6 @@ "packages": { "@babel/core": true, "@babel/core>@babel/helper-compilation-targets": true, - "@babel/preset-env>@babel/compat-data": true, "@babel/preset-env>@babel/helper-plugin-utils": true, "@babel/preset-env>@babel/plugin-syntax-object-rest-spread": true, "@babel/preset-env>@babel/plugin-transform-parameters": true @@ -703,7 +786,7 @@ "@babel/core": true, "@babel/preset-env>@babel/helper-plugin-utils": true, "@babel/preset-env>@babel/plugin-syntax-optional-chaining": true, - "@babel/preset-env>@babel/plugin-transform-spread>@babel/helper-skip-transparent-expression-wrappers": true + "@babel/preset-env>@babel/plugin-transform-for-of>@babel/helper-skip-transparent-expression-wrappers": true } }, "@babel/preset-env>@babel/plugin-transform-parameters": { @@ -725,11 +808,11 @@ "packages": { "@babel/core": true, "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-annotate-as-pure": true, - "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-optimise-call-expression": true, "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-replace-supers": true, "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-replace-supers>@babel/helper-member-expression-to-functions": true, + "@babel/preset-env>@babel/plugin-transform-classes>@babel/helper-replace-supers>@babel/helper-optimise-call-expression": true, + "@babel/preset-env>@babel/plugin-transform-for-of>@babel/helper-skip-transparent-expression-wrappers": true, "@babel/preset-env>@babel/plugin-transform-private-methods>@babel/helper-create-class-features-plugin>semver": true, - "@babel/preset-env>@babel/plugin-transform-spread>@babel/helper-skip-transparent-expression-wrappers": true, "depcheck>@babel/traverse>@babel/helper-environment-visitor": true, "depcheck>@babel/traverse>@babel/helper-function-name": true, "depcheck>@babel/traverse>@babel/helper-split-export-declaration": true @@ -786,12 +869,7 @@ "packages": { "@babel/core": true, "@babel/preset-env>@babel/helper-plugin-utils": true, - "@babel/preset-env>@babel/plugin-transform-spread>@babel/helper-skip-transparent-expression-wrappers": true - } - }, - "@babel/preset-env>@babel/plugin-transform-spread>@babel/helper-skip-transparent-expression-wrappers": { - "packages": { - "@babel/core>@babel/types": true + "@babel/preset-env>@babel/plugin-transform-for-of>@babel/helper-skip-transparent-expression-wrappers": true } }, "@babel/preset-env>@babel/plugin-transform-sticky-regex": { @@ -1815,6 +1893,7 @@ "console.log": true }, "packages": { + "@babel/core>@babel/code-frame": true, "@babel/core>@babel/generator": true, "@babel/core>@babel/types": true, "depcheck>@babel/parser": true, @@ -1823,7 +1902,6 @@ "depcheck>@babel/traverse>@babel/helper-hoist-variables": true, "depcheck>@babel/traverse>@babel/helper-split-export-declaration": true, "depcheck>@babel/traverse>globals": true, - "lavamoat>@babel/code-frame": true, "tsup>debug": true } }, @@ -1930,7 +2008,7 @@ }, "eslint-plugin-import>object.values>es-abstract>has-property-descriptors": { "packages": { - "eslint-plugin-import>array-includes>get-intrinsic": true + "lavamoat>json-stable-stringify>call-bind>es-define-property": true } }, "eslint-plugin-import>tsconfig-paths": { @@ -2070,105 +2148,6 @@ "readable-stream": true } }, - "lavamoat>@babel/code-frame": { - "globals": { - "console.warn": true, - "process.emitWarning": true - }, - "packages": { - "lavamoat>@babel/code-frame>chalk": true, - "lavamoat>@babel/highlight": true - } - }, - "lavamoat>@babel/code-frame>chalk": { - "globals": { - "process.env.TERM": true, - "process.platform": true - }, - "packages": { - "lavamoat>@babel/code-frame>chalk>ansi-styles": true, - "lavamoat>@babel/code-frame>chalk>escape-string-regexp": true, - "lavamoat>@babel/code-frame>chalk>supports-color": true - } - }, - "lavamoat>@babel/code-frame>chalk>ansi-styles": { - "packages": { - "lavamoat>@babel/code-frame>chalk>ansi-styles>color-convert": true - } - }, - "lavamoat>@babel/code-frame>chalk>ansi-styles>color-convert": { - "packages": { - "lavamoat>@babel/code-frame>chalk>ansi-styles>color-convert>color-name": true - } - }, - "lavamoat>@babel/code-frame>chalk>supports-color": { - "builtin": { - "os.release": true - }, - "globals": { - "process.env": true, - "process.platform": true, - "process.stderr": true, - "process.stdout": true, - "process.versions.node.split": true - }, - "packages": { - "lavamoat>@babel/code-frame>chalk>supports-color>has-flag": true - } - }, - "lavamoat>@babel/code-frame>chalk>supports-color>has-flag": { - "globals": { - "process.argv": true - } - }, - "lavamoat>@babel/highlight": { - "packages": { - "lavamoat>@babel/highlight>@babel/helper-validator-identifier": true, - "lavamoat>@babel/highlight>chalk": true, - "lavamoat>@babel/highlight>js-tokens": true - } - }, - "lavamoat>@babel/highlight>chalk": { - "globals": { - "process.env.TERM": true, - "process.platform": true - }, - "packages": { - "lavamoat>@babel/highlight>chalk>ansi-styles": true, - "lavamoat>@babel/highlight>chalk>escape-string-regexp": true, - "lavamoat>@babel/highlight>chalk>supports-color": true - } - }, - "lavamoat>@babel/highlight>chalk>ansi-styles": { - "packages": { - "lavamoat>@babel/highlight>chalk>ansi-styles>color-convert": true - } - }, - "lavamoat>@babel/highlight>chalk>ansi-styles>color-convert": { - "packages": { - "lavamoat>@babel/highlight>chalk>ansi-styles>color-convert>color-name": true - } - }, - "lavamoat>@babel/highlight>chalk>supports-color": { - "builtin": { - "os.release": true - }, - "globals": { - "process.env": true, - "process.platform": true, - "process.stderr": true, - "process.stdout": true, - "process.versions.node.split": true - }, - "packages": { - "lavamoat>@babel/highlight>chalk>supports-color>has-flag": true - } - }, - "lavamoat>@babel/highlight>chalk>supports-color>has-flag": { - "globals": { - "process.argv": true - } - }, "lavamoat>@lavamoat/aa": { "builtin": { "node:fs.lstatSync": true, @@ -2194,10 +2173,16 @@ "packages": { "browserify>has>function-bind": true, "eslint-plugin-import>array-includes>get-intrinsic": true, + "lavamoat>json-stable-stringify>call-bind>es-define-property": true, "lavamoat>json-stable-stringify>call-bind>es-errors": true, "lavamoat>json-stable-stringify>call-bind>set-function-length": true } }, + "lavamoat>json-stable-stringify>call-bind>es-define-property": { + "packages": { + "eslint-plugin-import>array-includes>get-intrinsic": true + } + }, "lavamoat>json-stable-stringify>call-bind>set-function-length": { "packages": { "browserify>util>is-typed-array>gopd": true, @@ -2210,8 +2195,7 @@ "lavamoat>json-stable-stringify>call-bind>set-function-length>define-data-property": { "packages": { "browserify>util>is-typed-array>gopd": true, - "eslint-plugin-import>array-includes>get-intrinsic": true, - "eslint-plugin-import>object.values>es-abstract>has-property-descriptors": true, + "lavamoat>json-stable-stringify>call-bind>es-define-property": true, "lavamoat>json-stable-stringify>call-bind>es-errors": true } }, @@ -2313,8 +2297,36 @@ "console.log": true }, "packages": { - "depcheck>@babel/parser": true, - "depcheck>@babel/traverse": true + "lavamoat>lavamoat-tofu>@babel/parser": true, + "lavamoat>lavamoat-tofu>@babel/traverse": true + } + }, + "lavamoat>lavamoat-tofu>@babel/traverse": { + "globals": { + "console.log": true + }, + "packages": { + "@babel/core>@babel/code-frame": true, + "@babel/core>@babel/generator": true, + "depcheck>@babel/traverse>@babel/helper-environment-visitor": true, + "depcheck>@babel/traverse>@babel/helper-function-name": true, + "depcheck>@babel/traverse>@babel/helper-hoist-variables": true, + "depcheck>@babel/traverse>@babel/helper-split-export-declaration": true, + "depcheck>@babel/traverse>globals": true, + "lavamoat>lavamoat-tofu>@babel/traverse>@babel/parser": true, + "lavamoat>lavamoat-tofu>@babel/traverse>@babel/types": true, + "tsup>debug": true + } + }, + "lavamoat>lavamoat-tofu>@babel/traverse>@babel/types": { + "globals": { + "console.warn": true, + "process.env.BABEL_TYPES_8_BREAKING": true + }, + "packages": { + "@babel/core>@babel/types>@babel/helper-string-parser": true, + "@babel/core>@babel/types>to-fast-properties": true, + "lavamoat>@babel/highlight>@babel/helper-validator-identifier": true } }, "readable-stream": { @@ -2375,7 +2387,7 @@ }, "packages": { "terser>@jridgewell/source-map>@jridgewell/trace-mapping>@jridgewell/resolve-uri": true, - "terser>@jridgewell/source-map>@jridgewell/trace-mapping>@jridgewell/sourcemap-codec": true + "tsup>sucrase>@jridgewell/gen-mapping>@jridgewell/sourcemap-codec": true } }, "terser>@jridgewell/source-map>@jridgewell/trace-mapping>@jridgewell/resolve-uri": { @@ -2383,13 +2395,6 @@ "define": true } }, - "terser>@jridgewell/source-map>@jridgewell/trace-mapping>@jridgewell/sourcemap-codec": { - "globals": { - "Buffer": true, - "TextDecoder": true, - "define": true - } - }, "terser>acorn": { "globals": { "console": true, @@ -2420,6 +2425,16 @@ "tsup>debug>ms": true } }, + "tsup>postcss>picocolors": { + "builtin": { + "tty.isatty": true + }, + "globals": { + "process.argv": true, + "process.env": true, + "process.platform": true + } + }, "tsup>sucrase>@jridgewell/gen-mapping": { "globals": { "define": true diff --git a/packages/snaps-sdk/.depcheckrc.json b/packages/snaps-sdk/.depcheckrc.json index 15d64e734b..e660449b8b 100644 --- a/packages/snaps-sdk/.depcheckrc.json +++ b/packages/snaps-sdk/.depcheckrc.json @@ -5,6 +5,8 @@ "@lavamoat/preinstall-always-fail", "@metamask/auto-changelog", "@metamask/eslint-*", + "@metamask/snaps-storybook", + "@storybook/addon-controls", "@types/*", "@typescript-eslint/*", "eslint-config-*", diff --git a/packages/snaps-sdk/.storybook/main.ts b/packages/snaps-sdk/.storybook/main.ts new file mode 100644 index 0000000000..6e24e2779a --- /dev/null +++ b/packages/snaps-sdk/.storybook/main.ts @@ -0,0 +1,17 @@ +import { StorybookConfig } from '@storybook/types'; + +const config: StorybookConfig = { + stories: ['../src/**/*.stories.tsx', '../src/**/*.mdx'], + framework: { + name: '@metamask/snaps-storybook', + options: {}, + }, + addons: [ + '@storybook/addon-controls', + ], + core: { + disableTelemetry: true, + } +}; + +export default config; diff --git a/packages/snaps-sdk/.storybook/preview.ts b/packages/snaps-sdk/.storybook/preview.ts new file mode 100644 index 0000000000..c8c7589ead --- /dev/null +++ b/packages/snaps-sdk/.storybook/preview.ts @@ -0,0 +1,7 @@ +import type { Preview } from '@metamask/snaps-storybook'; + +const preview: Preview = { + tags: ['autodocs'], +}; + +export default preview; diff --git a/packages/snaps-sdk/package.json b/packages/snaps-sdk/package.json index 95bba09e87..262d3bbc0b 100644 --- a/packages/snaps-sdk/package.json +++ b/packages/snaps-sdk/package.json @@ -42,6 +42,7 @@ "jsx-runtime.d.ts" ], "scripts": { + "start": "storybook dev --port 7000 --no-open", "test": "jest && yarn posttest", "posttest": "jest-it-up --margin 0.25", "test:ci": "yarn test", @@ -51,6 +52,7 @@ "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", "lint:changelog": "../../scripts/validate-changelog.sh @metamask/snaps-sdk", "build": "tsup --clean && yarn build:types", + "build:storybook": "storybook build --quiet", "build:types": "tsc --project tsconfig.build.json", "clean": "rimraf '*.tsbuildinfo' 'dist'", "publish:preview": "yarn npm publish --tag preview", @@ -72,6 +74,8 @@ "@metamask/eslint-config-jest": "^12.1.0", "@metamask/eslint-config-nodejs": "^12.1.0", "@metamask/eslint-config-typescript": "^12.1.0", + "@storybook/addon-controls": "^8.1.11", + "@storybook/types": "^8.1.11", "@swc/core": "1.3.78", "@types/jest": "^27.5.1", "@typescript-eslint/eslint-plugin": "^5.42.1", @@ -93,6 +97,7 @@ "prettier": "^2.7.1", "prettier-plugin-packagejson": "^2.2.11", "rimraf": "^4.1.2", + "storybook": "^8.1.11", "ts-jest": "^29.1.1", "tsup": "^8.0.1", "typescript": "~4.8.4" diff --git a/packages/snaps-sdk/src/jsx/component.ts b/packages/snaps-sdk/src/jsx/component.ts index 43ca510f4e..7315d0294b 100644 --- a/packages/snaps-sdk/src/jsx/component.ts +++ b/packages/snaps-sdk/src/jsx/component.ts @@ -1,9 +1,9 @@ import type { Json } from '@metamask/utils'; /** - * A key, which can be a string or a number. + * A key, i.e., a string value. */ -export type Key = string | number; +export type Key = string; /** * A JSON object. diff --git a/packages/snaps-sdk/src/jsx/components/Heading.ts b/packages/snaps-sdk/src/jsx/components/Heading.ts index ee3ff21067..4eb3803c22 100644 --- a/packages/snaps-sdk/src/jsx/components/Heading.ts +++ b/packages/snaps-sdk/src/jsx/components/Heading.ts @@ -6,7 +6,7 @@ import { createSnapComponent } from '../component'; * * @property children - The text to display in the heading. */ -type HeadingProps = { +export type HeadingProps = { children: StringElement; }; diff --git a/packages/snaps-sdk/src/jsx/components/Image.ts b/packages/snaps-sdk/src/jsx/components/Image.ts index 7786dce45b..a4555932f8 100644 --- a/packages/snaps-sdk/src/jsx/components/Image.ts +++ b/packages/snaps-sdk/src/jsx/components/Image.ts @@ -9,7 +9,7 @@ import { createSnapComponent } from '../component'; * @property alt - The alternative text of the image, which describes the image * for users who cannot see it. */ -type ImageProps = { +export type ImageProps = { src: string; alt?: string | undefined; }; diff --git a/packages/snaps-sdk/src/jsx/components/form/Option.ts b/packages/snaps-sdk/src/jsx/components/form/Option.ts index 6466ce068c..290e3e2f57 100644 --- a/packages/snaps-sdk/src/jsx/components/form/Option.ts +++ b/packages/snaps-sdk/src/jsx/components/form/Option.ts @@ -9,7 +9,7 @@ import { Dropdown } from './Dropdown'; * state in the form data. * @property children - The text to display. */ -type OptionProps = { +export type OptionProps = { value: string; children: string; }; diff --git a/packages/snaps-sdk/src/jsx/validation.test.tsx b/packages/snaps-sdk/src/jsx/validation.test.tsx index 9cb0c285ef..e1190dafda 100644 --- a/packages/snaps-sdk/src/jsx/validation.test.tsx +++ b/packages/snaps-sdk/src/jsx/validation.test.tsx @@ -61,11 +61,11 @@ import { } from './validation'; describe('KeyStruct', () => { - it.each(['foo', 42])('validates a key', (value) => { + it.each(['foo', 'bar'])('validates a key', (value) => { expect(is(value, KeyStruct)).toBe(true); }); - it.each([null, undefined, {}, []])('does not validate "%p"', (value) => { + it.each([42, null, undefined, {}, []])('does not validate "%p"', (value) => { expect(is(value, KeyStruct)).toBe(false); }); }); diff --git a/packages/snaps-sdk/src/jsx/validation.ts b/packages/snaps-sdk/src/jsx/validation.ts index bab3a1b0b9..e7b026a95f 100644 --- a/packages/snaps-sdk/src/jsx/validation.ts +++ b/packages/snaps-sdk/src/jsx/validation.ts @@ -12,7 +12,6 @@ import { array, lazy, nullable, - number, object, record, string, @@ -69,7 +68,7 @@ import type { /** * A struct for the {@link Key} type. */ -export const KeyStruct: Describe = nullUnion([string(), number()]); +export const KeyStruct: Describe = string(); /** * A struct for the {@link StringElement} type. diff --git a/packages/snaps-sdk/tsconfig.build.json b/packages/snaps-sdk/tsconfig.build.json index c51cd58db5..b32f6c67a2 100644 --- a/packages/snaps-sdk/tsconfig.build.json +++ b/packages/snaps-sdk/tsconfig.build.json @@ -9,6 +9,7 @@ "exclude": [ "**/*.test.ts", "**/*.test.tsx", + "**/*.stories.tsx", "./src/**/test-utils", "./src/**/__mocks__", "./src/**/__snapshots__" diff --git a/packages/snaps-sdk/tsconfig.json b/packages/snaps-sdk/tsconfig.json index 13936c8364..d248b9be8f 100644 --- a/packages/snaps-sdk/tsconfig.json +++ b/packages/snaps-sdk/tsconfig.json @@ -12,5 +12,10 @@ "jsx.d.ts", "jsx-runtime.d.ts", "jsx-dev-runtime.d.ts" + ], + "references": [ + { + "path": "../snaps-storybook" + } ] } diff --git a/packages/snaps-storybook/.depcheckrc.json b/packages/snaps-storybook/.depcheckrc.json new file mode 100644 index 0000000000..8b8db0958b --- /dev/null +++ b/packages/snaps-storybook/.depcheckrc.json @@ -0,0 +1,20 @@ +{ + "ignore-patterns": ["dist", "coverage"], + "ignores": [ + "@lavamoat/allow-scripts", + "@lavamoat/preinstall-always-fail", + "@metamask/auto-changelog", + "@metamask/eslint-*", + "@storybook/addon-docs", + "@storybook/addon-toolbars", + "@types/*", + "@typescript-eslint/*", + "eslint-config-*", + "eslint-plugin-*", + "prettier-plugin-packagejson", + "ts-jest", + "ts-node", + "typedoc", + "typescript" + ] +} diff --git a/packages/snaps-storybook/.eslintrc.js b/packages/snaps-storybook/.eslintrc.js new file mode 100644 index 0000000000..7a42669cc7 --- /dev/null +++ b/packages/snaps-storybook/.eslintrc.js @@ -0,0 +1,17 @@ +module.exports = { + extends: ['../../.eslintrc.js'], + + parserOptions: { + tsconfigRootDir: __dirname, + }, + + overrides: [ + { + files: ['**/theme/**/*.ts', '**/components/snaps/**/*.styles.ts'], + rules: { + '@typescript-eslint/naming-convention': 'off', + '@typescript-eslint/unbound-method': 'off', + }, + }, + ], +}; diff --git a/packages/snaps-storybook/CHANGELOG.md b/packages/snaps-storybook/CHANGELOG.md new file mode 100644 index 0000000000..aa399df1be --- /dev/null +++ b/packages/snaps-storybook/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +[Unreleased]: https://github.com/MetaMask/snaps/ diff --git a/packages/snaps-storybook/LICENSE b/packages/snaps-storybook/LICENSE new file mode 100644 index 0000000000..4a4c080fa7 --- /dev/null +++ b/packages/snaps-storybook/LICENSE @@ -0,0 +1,15 @@ +ISC License + +Copyright (c) 2024 MetaMask + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/packages/snaps-storybook/README.md b/packages/snaps-storybook/README.md new file mode 100644 index 0000000000..9b80824a82 --- /dev/null +++ b/packages/snaps-storybook/README.md @@ -0,0 +1,69 @@ +# @metamask/snaps-storybook + +A Storybook plugin for the MetaMask Snaps SDK. + +## Installation + +Use Node.js `18.0.0` or later. We recommend using [nvm](https://github.com/nvm-sh/nvm) +for managing Node.js versions. + +Install a dependency in your snap project using `yarn` or `npm`: + +- `npm install @metamask/snaps-storybook` +- `yarn add @metamask/snaps-storybook` + +## Usage + +`snaps-storybook` is a framework rather than an addon. To use it, add the +following to your `.storybook/main.[tj]s`: + +```js +module.exports = { + framework: { + name: '@metamask/snaps-storybook', + options: { + // Add options here + }, + }, +}; +``` + +In addition to supporting the Snaps SDK components, `snaps-storybook` also +loads some additional addons that are useful for developing Snaps: + +- `@storybook/addon-docs` for automatically generating documentation for your + components. +- `@storybook/addon-toolbar` for adding a toolbar to the Storybook UI. + +Other addons may or may not work with `snaps-storybook`. If you encounter +issues, please file a bug report. + +### Example + +After installing `snaps-storybook`, you can create a new story as usual: + +```js +import { Meta, Story } from '@metamask/snaps-storybook'; +import { Text, TextProps } from './Text'; + +const meta: Meta = { + title: 'Text/Text', + component: Text, + argTypes: { + // ... + }, +}; + +export default meta; + +/** + * The text component renders text. It can be used in combination with other + * formatting components to create rich text. + */ +export const Default: Story = { + render: (props) => , + args: { + children: 'This is some text.', + }, +}; +``` diff --git a/packages/snaps-storybook/jest.config.js b/packages/snaps-storybook/jest.config.js new file mode 100644 index 0000000000..9b0ecd7dea --- /dev/null +++ b/packages/snaps-storybook/jest.config.js @@ -0,0 +1,33 @@ +const deepmerge = require('deepmerge'); + +const baseConfig = require('../../jest.config.base'); + +module.exports = deepmerge(baseConfig, { + collectCoverageFrom: [ + '!./src/**/index.ts', + '!./src/types/global.ts', + '!./src/types/images.ts', + ], + + coverageThreshold: { + global: { + branches: 21.48, + functions: 15.32, + lines: 16.29, + statements: 16.11, + }, + }, + + testMatch: ['/**/*.test.ts', '/**/*.test.tsx'], + transform: { + '^.+\\.(t|j)sx?$': [ + 'ts-jest', + { + tsconfig: { + jsx: 'react-jsxdev', + jsxImportSource: '@metamask/snaps-jsx', + }, + }, + ], + }, +}); diff --git a/packages/snaps-storybook/package.json b/packages/snaps-storybook/package.json new file mode 100644 index 0000000000..5607280abd --- /dev/null +++ b/packages/snaps-storybook/package.json @@ -0,0 +1,111 @@ +{ + "name": "@metamask/snaps-storybook", + "version": "0.0.0", + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/types/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + }, + "./preset": { + "types": "./dist/types/preset.d.ts", + "import": "./dist/preset.mjs", + "require": "./dist/preset.js" + }, + "./manager": { + "types": "./dist/types/manager.d.ts", + "import": "./dist/manager.mjs", + "require": "./dist/manager.js" + }, + "./package.json": "./package.json" + }, + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/types/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "test": "jest && yarn posttest", + "posttest": "jest-it-up --margin 0.25", + "test:ci": "yarn test", + "clean": "rimraf '*.tsbuildinfo' 'dist'", + "start": "storybook dev --port 7000 --no-open", + "build": "tsup --clean && yarn build:types", + "build:types": "tsc --project tsconfig.build.json", + "build:ci": "tsup --clean", + "lint:dependencies": "depcheck", + "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx", + "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore", + "lint": "yarn lint:eslint && yarn lint:misc --check && yarn lint:changelog && yarn lint:dependencies", + "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write", + "lint:changelog": "../../scripts/validate-changelog.sh @metamask/snaps-storybook", + "publish:preview": "yarn npm publish --tag preview", + "lint:ci": "yarn lint" + }, + "dependencies": { + "@babel/generator": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.23.0", + "@chakra-ui/anatomy": "^2.1.1", + "@chakra-ui/react": "^2.6.1", + "@chakra-ui/utils": "^2.0.15", + "@emotion/react": "^11.10.8", + "@emotion/styled": "^11.10.8", + "@metamask/design-tokens": "^4.0.0", + "@metamask/jazzicon": "^2.0.0", + "@metamask/snaps-sdk": "workspace:^", + "@metamask/utils": "^8.3.0", + "@storybook/addon-docs": "^8.1.11", + "@storybook/addon-themes": "^8.1.11", + "@storybook/addon-toolbars": "^8.1.11", + "@storybook/builder-vite": "^8.1.11", + "@storybook/manager-api": "^8.1.11", + "@storybook/react-dom-shim": "^8.1.11", + "@storybook/theming": "^8.1.11", + "@storybook/types": "^8.1.11", + "prettier": "^2.7.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "storybook": "^8.1.11", + "vite-plugin-node-polyfills": "^0.22.0" + }, + "devDependencies": { + "@chakra-ui/theme-tools": "^2.1.2", + "@metamask/auto-changelog": "^3.4.4", + "@metamask/eslint-config": "^12.1.0", + "@metamask/eslint-config-jest": "^12.1.0", + "@metamask/eslint-config-nodejs": "^12.1.0", + "@metamask/eslint-config-typescript": "^12.1.0", + "@typescript-eslint/eslint-plugin": "^5.42.1", + "@typescript-eslint/parser": "^5.42.1", + "deepmerge": "^4.2.2", + "depcheck": "^1.4.7", + "eslint": "^8.27.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jest": "^27.1.5", + "eslint-plugin-jsdoc": "^39.6.2", + "eslint-plugin-n": "^15.7.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", + "jest": "^29.0.2", + "jest-it-up": "^2.0.0", + "ts-jest": "^29.1.1", + "tsup": "^8.0.1", + "typescript": "~4.8.4", + "vite": "^4.3.9" + }, + "peerDependencies": { + "storybook": "^8.1.11" + }, + "engines": { + "node": "^18.16 || >=20" + }, + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org/" + } +} diff --git a/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Bold-Italic.woff2 b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Bold-Italic.woff2 new file mode 100644 index 0000000000..f33ca27080 Binary files /dev/null and b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Bold-Italic.woff2 differ diff --git a/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Bold.woff2 b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Bold.woff2 new file mode 100644 index 0000000000..aa32ab90ff Binary files /dev/null and b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Bold.woff2 differ diff --git a/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Italic.woff2 b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Italic.woff2 new file mode 100644 index 0000000000..ecdc43f13b Binary files /dev/null and b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Italic.woff2 differ diff --git a/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Light-Italic.woff2 b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Light-Italic.woff2 new file mode 100644 index 0000000000..3978f6a4cd Binary files /dev/null and b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Light-Italic.woff2 differ diff --git a/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Light.woff2 b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Light.woff2 new file mode 100644 index 0000000000..037b8fe749 Binary files /dev/null and b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Light.woff2 differ diff --git a/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Medium-Italic.woff2 b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Medium-Italic.woff2 new file mode 100644 index 0000000000..4266111a00 Binary files /dev/null and b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Medium-Italic.woff2 differ diff --git a/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Medium.woff2 b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Medium.woff2 new file mode 100644 index 0000000000..4be788fbe7 Binary files /dev/null and b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Medium.woff2 differ diff --git a/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Regular.woff2 b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Regular.woff2 new file mode 100644 index 0000000000..702b7098f6 Binary files /dev/null and b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-Regular.woff2 differ diff --git a/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-SemiBold-Italic.woff2 b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-SemiBold-Italic.woff2 new file mode 100644 index 0000000000..ad1b241142 Binary files /dev/null and b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-SemiBold-Italic.woff2 differ diff --git a/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-SemiBold.woff2 b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-SemiBold.woff2 new file mode 100644 index 0000000000..7db0055e61 Binary files /dev/null and b/packages/snaps-storybook/src/assets/fonts/Euclid-Circular-B-SemiBold.woff2 differ diff --git a/packages/snaps-storybook/src/assets/fonts/IBM-Plex-Mono-Regular.woff2 b/packages/snaps-storybook/src/assets/fonts/IBM-Plex-Mono-Regular.woff2 new file mode 100644 index 0000000000..4297ee3a46 Binary files /dev/null and b/packages/snaps-storybook/src/assets/fonts/IBM-Plex-Mono-Regular.woff2 differ diff --git a/packages/snaps-storybook/src/assets/fonts/Inter-Bold.woff2 b/packages/snaps-storybook/src/assets/fonts/Inter-Bold.woff2 new file mode 100644 index 0000000000..775f7575e6 Binary files /dev/null and b/packages/snaps-storybook/src/assets/fonts/Inter-Bold.woff2 differ diff --git a/packages/snaps-storybook/src/assets/fonts/Inter-Light.woff2 b/packages/snaps-storybook/src/assets/fonts/Inter-Light.woff2 new file mode 100644 index 0000000000..2d99c5bcfa Binary files /dev/null and b/packages/snaps-storybook/src/assets/fonts/Inter-Light.woff2 differ diff --git a/packages/snaps-storybook/src/assets/fonts/Inter-Medium.woff2 b/packages/snaps-storybook/src/assets/fonts/Inter-Medium.woff2 new file mode 100644 index 0000000000..21db79416d Binary files /dev/null and b/packages/snaps-storybook/src/assets/fonts/Inter-Medium.woff2 differ diff --git a/packages/snaps-storybook/src/assets/fonts/Inter-Regular.woff2 b/packages/snaps-storybook/src/assets/fonts/Inter-Regular.woff2 new file mode 100644 index 0000000000..d228a4af2f Binary files /dev/null and b/packages/snaps-storybook/src/assets/fonts/Inter-Regular.woff2 differ diff --git a/packages/snaps-storybook/src/assets/fonts/Inter-SemiBold.woff2 b/packages/snaps-storybook/src/assets/fonts/Inter-SemiBold.woff2 new file mode 100644 index 0000000000..da1c039b75 Binary files /dev/null and b/packages/snaps-storybook/src/assets/fonts/Inter-SemiBold.woff2 differ diff --git a/packages/snaps-storybook/src/assets/fonts/fonts.css b/packages/snaps-storybook/src/assets/fonts/fonts.css new file mode 100644 index 0000000000..140e0608e8 --- /dev/null +++ b/packages/snaps-storybook/src/assets/fonts/fonts.css @@ -0,0 +1,111 @@ +@font-face { + font-family: 'Euclid Circular B'; + font-style: normal; + font-weight: 300; + src: url('./Euclid-Circular-B-Light.woff2') format('woff2'); +} + +@font-face { + font-family: 'Euclid Circular B'; + font-style: italic; + font-weight: 300; + src: url('./Euclid-Circular-B-Light-Italic.woff2') format('woff2'); +} + +@font-face { + font-family: 'Euclid Circular B'; + font-style: normal; + font-weight: 400; + src: url('./Euclid-Circular-B-Regular.woff2') format('woff2'); +} + +@font-face { + font-family: 'Euclid Circular B'; + font-style: italic; + font-weight: 400; + src: url('./Euclid-Circular-B-Italic.woff2') format('woff2'); +} + +@font-face { + font-family: 'Euclid Circular B'; + font-style: normal; + font-weight: 500; + src: url('./Euclid-Circular-B-Medium.woff2') format('woff2'); +} + +@font-face { + font-family: 'Euclid Circular B'; + font-style: italic; + font-weight: 500; + src: url('./Euclid-Circular-B-Medium-Italic.woff2') format('woff2'); +} + +@font-face { + font-family: 'Euclid Circular B'; + font-style: normal; + font-weight: 600; + src: url('./Euclid-Circular-B-SemiBold.woff2') format('woff2'); +} + +@font-face { + font-family: 'Euclid Circular B'; + font-style: italic; + font-weight: 600; + src: url('./Euclid-Circular-B-SemiBold-Italic.woff2') format('woff2'); +} + +@font-face { + font-family: 'Euclid Circular B'; + font-style: normal; + font-weight: 700; + src: url('./Euclid-Circular-B-Bold.woff2') format('woff2'); +} + +@font-face { + font-family: 'Euclid Circular B'; + font-style: italic; + font-weight: 800; + src: url('./Euclid-Circular-B-Bold-Italic.woff2') format('woff2'); +} + +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 300; + src: url('./Inter-Light.woff2') format('woff2'); +} + +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 400; + src: url('./Inter-Regular.woff2') format('woff2'); +} + +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 500; + src: url('./Inter-Medium.woff2') format('woff2'); +} + +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 600; + src: url('./Inter-SemiBold.woff2') format('woff2'); +} + +@font-face { + font-family: 'Inter'; + font-style: normal; + font-weight: 700; + src: url('./Inter-Bold.woff2') format('woff2'); +} + +@font-face { + font-family: 'IBM Plex Mono'; + font-style: normal; + font-weight: 400; + src: url('./IBM-Plex-Mono-Regular.woff2') format('woff2'); +} diff --git a/packages/snaps-storybook/src/assets/global.css b/packages/snaps-storybook/src/assets/global.css new file mode 100644 index 0000000000..bcca944e1d --- /dev/null +++ b/packages/snaps-storybook/src/assets/global.css @@ -0,0 +1,11 @@ +.sidebar-item { + font-size: 14px; +} + +.sidebar-item[data-nodetype="component"], .sidebar-item[data-selected="true"] { + font-weight: 500 !important; +} + +.sb-bar button { + font-weight: 600 !important; +} diff --git a/packages/snaps-storybook/src/assets/logo.svg b/packages/snaps-storybook/src/assets/logo.svg new file mode 100644 index 0000000000..e443e894dd --- /dev/null +++ b/packages/snaps-storybook/src/assets/logo.svg @@ -0,0 +1 @@ + diff --git a/packages/snaps-storybook/src/components/ColorMode.tsx b/packages/snaps-storybook/src/components/ColorMode.tsx new file mode 100644 index 0000000000..e3c0df343e --- /dev/null +++ b/packages/snaps-storybook/src/components/ColorMode.tsx @@ -0,0 +1,31 @@ +import { useColorMode } from '@chakra-ui/react'; +import type { FunctionComponent } from 'react'; +import { useEffect } from 'react'; + +/** + * The props for the {@link ColorMode} component. + */ +export type ColorModeProps = { + /** + * The color mode to set. + */ + colorMode: 'light' | 'dark'; +}; + +/** + * A component to set the color mode of the application. This is used by the + * toolbar button to toggle the color mode. + * + * @param props - The props of the component. + * @param props.colorMode - The color mode to set. + * @returns A component to set the color mode. + */ +export const ColorMode: FunctionComponent = ({ colorMode }) => { + const { setColorMode } = useColorMode(); + + useEffect(() => { + setColorMode(colorMode); + }, [colorMode, setColorMode]); + + return null; +}; diff --git a/packages/snaps-storybook/src/components/Delineator.tsx b/packages/snaps-storybook/src/components/Delineator.tsx new file mode 100644 index 0000000000..97cf9828db --- /dev/null +++ b/packages/snaps-storybook/src/components/Delineator.tsx @@ -0,0 +1,43 @@ +import { Box, Flex, Text } from '@chakra-ui/react'; +import type { FunctionComponent, ReactNode } from 'react'; + +import { SnapIcon } from './icons'; + +/** + * The props for the {@link Delineator} component. + */ +export type DelineatorProps = { + /** + * The children to render in the delineator. + */ + children?: ReactNode; +}; + +/** + * The Snaps delineator component, shown in the extension window. + * + * @param props - The props of the component. + * @param props.children - The children of the component. + * @returns A delineator element. + */ +export const Delineator: FunctionComponent = ({ + children, +}) => ( + + + + + Content from{' '} + + Title + + + + {children} + +); diff --git a/packages/snaps-storybook/src/components/ErrorBoundary.tsx b/packages/snaps-storybook/src/components/ErrorBoundary.tsx new file mode 100644 index 0000000000..b050670e3f --- /dev/null +++ b/packages/snaps-storybook/src/components/ErrorBoundary.tsx @@ -0,0 +1,70 @@ +import type { ReactNode } from 'react'; +import { PureComponent } from 'react'; + +/** + * The props of the {@link ErrorBoundary} component. + */ +export type ErrorBoundaryProps = { + /** + * The children to render. + */ + children: ReactNode; + + /** + * A function that displays the main view. + */ + showMain: () => void; + + /** + * A function that displays an exception. + */ + showException: (error: Error) => void; +}; + +/** + * The state of the {@link ErrorBoundary} component. + */ +export type ErrorBoundaryState = { + /** + * Whether an error has occurred. + */ + hasError: boolean; +}; + +/** + * An error boundary component, which catches errors in its children and + * displays an error message. + * + * @param props - The props of the component. + * @param props.children - The children to render. + * @param props.showMain - A function that displays the main view. + * @param props.showException - A function that displays an exception. + */ +export class ErrorBoundary extends PureComponent< + ErrorBoundaryProps, + ErrorBoundaryState +> { + state: ErrorBoundaryState = { hasError: false }; + + static getDerivedStateFromError(): ErrorBoundaryState { + return { hasError: true }; + } + + componentDidMount() { + if (!this.state.hasError) { + this.props.showMain(); + } + } + + componentDidCatch(error: Error): void { + this.props.showException(error); + } + + render() { + if (this.state.hasError) { + return null; + } + + return this.props.children; + } +} diff --git a/packages/snaps-storybook/src/components/Header.tsx b/packages/snaps-storybook/src/components/Header.tsx new file mode 100644 index 0000000000..598ee101a9 --- /dev/null +++ b/packages/snaps-storybook/src/components/Header.tsx @@ -0,0 +1,34 @@ +import { Box, Flex, Heading, SkeletonCircle } from '@chakra-ui/react'; +import type { FunctionComponent } from 'react'; + +/** + * The header component for the extension window. + * + * @returns The header element. + */ +export const Header: FunctionComponent = () => ( + + + + + Title + + + @organization/lorem-ipsum + + + +); diff --git a/packages/snaps-storybook/src/components/Renderer.tsx b/packages/snaps-storybook/src/components/Renderer.tsx new file mode 100644 index 0000000000..4adb027b94 --- /dev/null +++ b/packages/snaps-storybook/src/components/Renderer.tsx @@ -0,0 +1,146 @@ +import type { GenericSnapElement, Nestable } from '@metamask/snaps-sdk/jsx'; +import { assert } from '@metamask/utils'; +import type { FunctionComponent } from 'react'; + +import { CUSTOM_COMPONENTS } from './custom'; +import { SNAPS_COMPONENTS } from './snaps'; + +/** + * Custom component overrides. + */ +export type Overrides = Record>>; + +/** + * The props that are passed to a rendered component. + * + * @template Type - The type of the props of the component itself. These will be + * merged with the render props. + */ +export type RenderProps = Type & { + /** + * The Renderer component to use to render nested elements. + */ + // eslint-disable-next-line @typescript-eslint/naming-convention + Renderer: FunctionComponent; +}; + +/** + * The props for the {@link Renderer} component. + */ +export type RendererProps = { + /** + * The unique ID to use as key for the renderer. This is used to ensure that + * the rendered components have unique keys. + */ + id: string; + + /** + * The JSX element to render. + */ + element: Nestable; + + /** + * Custom component overrides. + */ + overrides?: Overrides; +}; + +/** + * Get the components to use for rendering JSX elements. + * + * @param overrides - Custom component overrides. + * @returns The components to use for rendering JSX elements. + */ +function getComponents( + overrides: Overrides, +): Record>> { + const snapsComponents = Object.fromEntries( + Object.entries(SNAPS_COMPONENTS).map(([key, value]) => [ + key, + value.Component, + ]), + ); + + return { + ...CUSTOM_COMPONENTS, + ...snapsComponents, + ...overrides, + }; +} + +/** + * The renderer component that renders Snaps JSX elements. It supports rendering + * strings, JSX elements, booleans, null, and arrays thereof. + * + * @param props - The component props. + * @param props.id - The unique ID to use as key for the renderer. This is used + * to ensure that the rendered components have unique keys. + * @param props.element - The JSX element to render. + * @param props.overrides - Custom component overrides. + * @returns The rendered component. + */ +export const Renderer: FunctionComponent = ({ + element, + id, + overrides = {}, +}) => { + const components = getComponents(overrides); + + if (typeof element === 'string') { + return <>{element}; + } + + if (element === null || typeof element === 'boolean') { + return null; + } + + if (Array.isArray(element)) { + return ( + <> + {element.map((child, index) => ( + + ))} + + ); + } + + const Component = components[element.type]; + assert(Component, `No component found for type: "${element.type}".`); + + return ( + + ); +}; + +/** + * Create a renderer component that renders JSX elements with the given base ID + * and overrides. + * + * @param baseId - The base ID to use for the renderer. + * @param baseOverrides - The base custom component overrides. + * @returns The renderer component. + */ +function createRenderer(baseId: string, baseOverrides: Overrides) { + // eslint-disable-next-line @typescript-eslint/naming-convention + return function ChildRenderer({ id, element, overrides }: RendererProps) { + return ( + + ); + }; +} diff --git a/packages/snaps-storybook/src/components/custom/Extension.tsx b/packages/snaps-storybook/src/components/custom/Extension.tsx new file mode 100644 index 0000000000..79580db037 --- /dev/null +++ b/packages/snaps-storybook/src/components/custom/Extension.tsx @@ -0,0 +1,57 @@ +import { Flex } from '@chakra-ui/react'; +import type { JSXElement } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import { Delineator } from '../Delineator'; +import { Header } from '../Header'; +import type { RenderProps } from '../Renderer'; +import { getFooter } from './utils'; + +/** + * The props for the {@link Extension} component. + */ +export type ExtensionProps = { + /** + * The JSX element to render in the extension. + */ + children: JSXElement; +}; + +/** + * The MetaMask extension window as a component. This renders the authorship + * header and the content of the Snap in the delineator. + * + * @param props - The component props. + * @param props.children - The JSX element to render in the extension. + * @param props.Renderer - The Renderer component to use to render nested + * elements. + * @returns The rendered component. + */ +export const Extension: FunctionComponent> = ({ + children, + Renderer, +}) => { + const footer = getFooter(children); + + return ( + +
+ + null, + }} + /> + + {footer && } + + ); +}; diff --git a/packages/snaps-storybook/src/components/custom/ThemeProvider.tsx b/packages/snaps-storybook/src/components/custom/ThemeProvider.tsx new file mode 100644 index 0000000000..93852273f7 --- /dev/null +++ b/packages/snaps-storybook/src/components/custom/ThemeProvider.tsx @@ -0,0 +1,47 @@ +import { ChakraProvider } from '@chakra-ui/react'; +import type { JSXElement } from '@metamask/snaps-sdk/jsx'; +import { DecoratorHelpers } from '@storybook/addon-themes'; +import type { FunctionComponent } from 'react'; + +import { theme } from '../../theme'; +import { ColorMode } from '../ColorMode'; +import { Renderer } from '../Renderer'; + +const { initializeThemeState } = DecoratorHelpers; + +/** + * The props for the {@link ThemeProvider} component. + */ +export type ThemeProviderProps = { + /** + * The JSX element to render. + */ + children: JSXElement; + + /** + * The theme to use. + */ + theme: 'light' | 'dark'; +}; + +/** + * The theme provider component. This provides the theme values to Chakra UI. + * + * @param props - The theme provider props. + * @param props.children - The JSX element to render. + * @param props.theme - The theme to use. + * @returns The rendered theme provider. + */ +export const ThemeProvider: FunctionComponent = ({ + children, + theme: selectedTheme, +}) => { + initializeThemeState(['light', 'dark'], 'light'); + + return ( + + + + + ); +}; diff --git a/packages/snaps-storybook/src/components/custom/index.ts b/packages/snaps-storybook/src/components/custom/index.ts new file mode 100644 index 0000000000..79a3fb6d0d --- /dev/null +++ b/packages/snaps-storybook/src/components/custom/index.ts @@ -0,0 +1,13 @@ +import { Extension } from './Extension'; +import { ThemeProvider } from './ThemeProvider'; + +/** + * The custom components for the Snaps renderer. + * + * This is defined separate from the Snaps components to avoid circular + * dependencies. + */ +export const CUSTOM_COMPONENTS = { + Extension, + ThemeProvider, +}; diff --git a/packages/snaps-storybook/src/components/custom/utils.ts b/packages/snaps-storybook/src/components/custom/utils.ts new file mode 100644 index 0000000000..0ceb9e486a --- /dev/null +++ b/packages/snaps-storybook/src/components/custom/utils.ts @@ -0,0 +1,114 @@ +// TODO: Move to `snaps-sdk`? + +import type { JSXElement, Nestable } from '@metamask/snaps-sdk/jsx'; +import { hasProperty, isPlainObject } from '@metamask/utils'; + +/** + * Check if a JSX element has children. + * + * @param element - A JSX element. + * @returns `true` if the element has children, `false` otherwise. + */ +export function hasChildren( + element: Element, +): element is Element & { + props: { children: Nestable }; +} { + return hasProperty(element.props, 'children'); +} + +/** + * Filter a JSX child to remove `null`, `undefined`, plain booleans, and empty + * strings. + * + * @param child - The JSX child to filter. + * @returns `true` if the child is not `null`, `undefined`, a plain boolean, or + * an empty string, `false` otherwise. + */ +function filterJsxChild(child: JSXElement | string | boolean | null): boolean { + return Boolean(child) && child !== true; +} + +/** + * Get the children of a JSX element as an array. If the element has only one + * child, the child is returned as an array. + * + * @param element - A JSX element. + * @returns The children of the element. + */ +export function getJsxChildren(element: JSXElement): (JSXElement | string)[] { + if (hasChildren(element)) { + if (Array.isArray(element.props.children)) { + // @ts-expect-error - Each member of the union type has signatures, but + // none of those signatures are compatible with each other. + return element.props.children.filter(filterJsxChild).flat(Infinity); + } + + if (element.props.children) { + return [element.props.children]; + } + } + + return []; +} + +/** + * Walk a JSX tree and call a callback on each node. + * + * @param node - The JSX node to walk. + * @param callback - The callback to call on each node. + * @param depth - The current depth in the JSX tree for a walk. + * @returns The result of the callback, if any. + */ +export function walkJsx( + node: JSXElement | JSXElement[], + callback: (node: JSXElement, depth: number) => Value | undefined, + depth = 0, +): Value | undefined { + if (Array.isArray(node)) { + for (const child of node) { + const childResult = walkJsx(child as JSXElement, callback, depth); + if (childResult !== undefined) { + return childResult; + } + } + + return undefined; + } + + const result = callback(node, depth); + if (result !== undefined) { + return result; + } + + if (hasChildren(node)) { + const children = getJsxChildren(node); + for (const child of children) { + if (isPlainObject(child)) { + const childResult = walkJsx(child, callback, depth + 1); + if (childResult !== undefined) { + return childResult; + } + } + } + } + + return undefined; +} + +/** + * Get the footer element from the JSX element tree. + * + * @param element - The JSX element to search for the footer. + * @returns The footer element. + */ +export function getFooter(element: JSXElement) { + // eslint-disable-next-line consistent-return + const footer = walkJsx(element, (node) => { + if (node.type === 'Footer') { + return node; + } + }); + + return footer; +} diff --git a/packages/snaps-storybook/src/components/icons/ArrowDownIcon.tsx b/packages/snaps-storybook/src/components/icons/ArrowDownIcon.tsx new file mode 100644 index 0000000000..e188441f79 --- /dev/null +++ b/packages/snaps-storybook/src/components/icons/ArrowDownIcon.tsx @@ -0,0 +1,11 @@ +import { createIcon } from '@chakra-ui/react'; + +export const ArrowDownIcon = createIcon({ + displayName: 'ArrowDown', + viewBox: '0 0 512 512', + d: 'm256 363c-17 0-32-7-45-21l-141-150c-8-10-8-26 0-36 9-9 22-9 31 0l140 153c9 9 21 9 30 0l140-153c9-9 22-9 31 0 8 10 8 24 0 33l-141 153c-13 14-28 21-45 21z', + defaultProps: { + width: '16px', + height: '16px', + }, +}); diff --git a/packages/snaps-storybook/src/components/icons/CheckBoldIcon.tsx b/packages/snaps-storybook/src/components/icons/CheckBoldIcon.tsx new file mode 100644 index 0000000000..8cdf44a70a --- /dev/null +++ b/packages/snaps-storybook/src/components/icons/CheckBoldIcon.tsx @@ -0,0 +1,11 @@ +import { createIcon } from '@chakra-ui/react'; + +export const CheckBoldIcon = createIcon({ + displayName: 'CheckBoldIcon', + viewBox: '0 0 512 512', + d: 'm412 145c12 12 12 32 0 45l-185 183c-12 12-32 12-45 0l-81-80c-13-13-13-33 0-46 12-12 32-12 45 0l59 58 161-161c13-12 33-12 46 1z', + defaultProps: { + width: '20px', + height: '20px', + }, +}); diff --git a/packages/snaps-storybook/src/components/icons/CopyIcon.tsx b/packages/snaps-storybook/src/components/icons/CopyIcon.tsx new file mode 100644 index 0000000000..c990ab58ab --- /dev/null +++ b/packages/snaps-storybook/src/components/icons/CopyIcon.tsx @@ -0,0 +1,11 @@ +import { createIcon } from '@chakra-ui/react'; + +export const CopyIcon = createIcon({ + displayName: 'CopyIcon', + viewBox: '0 0 512 512', + d: 'm333 274l0 86c0 72-28 101-100 101l-86 0c-72 0-100-29-100-101l0-86c0-71 28-100 100-100l86 0c72 0 100 29 100 100z m23-223l-86 0c-63 0-93 23-99 77-1 11 8 20 20 20l42 0c86 0 126 40 126 126l0 43c0 11 9 21 21 19 54-6 76-35 76-98l0-86c0-72-28-101-100-101z', + defaultProps: { + width: '16px', + height: '16px', + }, +}); diff --git a/packages/snaps-storybook/src/components/icons/CopySuccessIcon.tsx b/packages/snaps-storybook/src/components/icons/CopySuccessIcon.tsx new file mode 100644 index 0000000000..bcb3ec9081 --- /dev/null +++ b/packages/snaps-storybook/src/components/icons/CopySuccessIcon.tsx @@ -0,0 +1,11 @@ +import { createIcon } from '@chakra-ui/react'; + +export const CopySuccessIcon = createIcon({ + displayName: 'CopySuccessIcon', + viewBox: '0 0 512 512', + d: 'm356 51l-86 0c-63 0-93 23-99 77-1 11 8 20 20 20l42 0c86 0 126 40 126 126l0 43c0 11 9 21 21 19 54-6 76-35 76-98l0-86c0-72-28-101-100-101z m-123 123l-86 0c-72 0-100 29-100 100l0 86c0 72 28 101 100 101l86 0c72 0 100-29 100-101l0-86c0-71-28-100-100-100z m24 116l-76 76c-2 3-6 4-10 4-4 0-8-1-10-4l-39-38c-5-6-5-15 0-21 6-6 15-6 21 0l28 28 66-66c5-6 15-6 20 0 6 6 6 15 0 21z', + defaultProps: { + width: '16px', + height: '16px', + }, +}); diff --git a/packages/snaps-storybook/src/components/icons/DangerIcon.tsx b/packages/snaps-storybook/src/components/icons/DangerIcon.tsx new file mode 100644 index 0000000000..84eae10c82 --- /dev/null +++ b/packages/snaps-storybook/src/components/icons/DangerIcon.tsx @@ -0,0 +1,11 @@ +import { createIcon } from '@chakra-ui/react'; + +export const DangerIcon = createIcon({ + displayName: 'DangerIcon', + viewBox: '0 0 512 512', + d: 'm443 342l-126-241c-16-32-40-50-65-50-26 0-50 18-66 50l-126 241c-16 30-18 60-5 83 13 23 38 36 71 36l251 0c33 0 58-13 71-36 13-23 11-53-5-83z m-206-145c0-8 6-15 15-15 8 0 14 7 14 15l0 105c0 8-6 15-14 15-9 0-15-7-15-15z m28 182c-1 1-2 2-3 3-1 0-2 1-3 1-1 1-2 1-4 2-1 0-2 0-3 0-2 0-3 0-4 0-2-1-3-1-4-2-1 0-2-1-3-1-1-1-2-2-3-3-4-4-6-9-6-15 0-5 2-11 6-15 1 0 2-1 3-2 1-1 2-2 3-2 1-1 2-1 4-1 2-1 5-1 7 0 2 0 3 0 4 1 1 0 2 1 3 2 1 1 2 2 3 2 4 4 6 10 6 15 0 6-2 11-6 15z', + defaultProps: { + width: '12px', + height: '12px', + }, +}); diff --git a/packages/snaps-storybook/src/components/icons/ExportIcon.tsx b/packages/snaps-storybook/src/components/icons/ExportIcon.tsx new file mode 100644 index 0000000000..ceadd59491 --- /dev/null +++ b/packages/snaps-storybook/src/components/icons/ExportIcon.tsx @@ -0,0 +1,11 @@ +import { createIcon } from '@chakra-ui/react'; + +export const ExportIcon = createIcon({ + displayName: 'ExportIcon', + viewBox: '0 0 512 512', + d: 'm313 469l-114 0c-108 0-156-48-156-156l0-114c0-108 48-156 156-156l39 0c13 0 23 9 23 23 0 13-10 23-23 23l-39 0c-83 0-110 27-110 110l0 114c0 83 27 110 110 110l114 0c83 0 110-27 110-110l0-39c0-13 10-23 23-23 14 0 23 10 23 23l0 39c0 108-48 156-156 156z m-39-208c-7 0-11-3-16-7-9-9-9-23 0-32l133-133-36 0c-14 0-23-10-23-23 0-14 9-23 23-23l91 0c14 0 23 9 23 23l0 91c0 14-9 23-23 23-13 0-23-9-23-23l0-36-133 133c-4 4-9 7-16 7z', + defaultProps: { + width: '14px', + height: '14px', + }, +}); diff --git a/packages/snaps-storybook/src/components/icons/EyeIcon.tsx b/packages/snaps-storybook/src/components/icons/EyeIcon.tsx new file mode 100644 index 0000000000..cdd2cfc922 --- /dev/null +++ b/packages/snaps-storybook/src/components/icons/EyeIcon.tsx @@ -0,0 +1,11 @@ +import { createIcon } from '@chakra-ui/react'; + +export const EyeIcon = createIcon({ + displayName: 'EyeIcon', + viewBox: '0 0 512 512', + d: 'm441 198c-47-75-117-118-189-118-37 0-72 11-105 31-32 20-61 49-85 87-20 32-20 84 0 116 47 75 117 117 190 117 36 0 71-10 104-30 32-20 61-50 85-87 20-32 20-84 0-116z m-189 141c-46 0-83-37-83-83 0-46 37-83 83-83 45 0 82 37 82 83 0 46-37 83-82 83z m0-142c-33 0-59 27-59 59 0 32 26 58 59 58 32 0 58-26 58-58 0-32-26-59-58-59z', + defaultProps: { + width: '20px', + height: '20px', + }, +}); diff --git a/packages/snaps-storybook/src/components/icons/EyeSlashIcon.tsx b/packages/snaps-storybook/src/components/icons/EyeSlashIcon.tsx new file mode 100644 index 0000000000..28d1c07a1b --- /dev/null +++ b/packages/snaps-storybook/src/components/icons/EyeSlashIcon.tsx @@ -0,0 +1,11 @@ +import { createIcon } from '@chakra-ui/react'; + +export const EyeSlashIcon = createIcon({ + displayName: 'EyeSlashIcon', + viewBox: '0 0 512 512', + d: 'm454 196c-7-10-13-19-20-28-8-10-23-11-32-2l-64 64c5 14 6 31 2 48-8 30-32 54-62 61-17 5-33 4-47-1 0 0-31 31-53 53-11 10-7 29 7 35 23 8 47 13 71 13 38 0 75-11 108-32 35-21 66-53 91-93 20-32 19-86-1-118z m-137 60c0 33-27 61-61 61-1 0-2 0-4 0l64-65c1 2 1 3 1 4z m-258 61c-22-34-22-88 0-122 24-39 55-69 88-90 34-21 71-32 109-32 42 0 83 14 120 40l65-65c6-7 17-7 23 0 7 6 7 16 0 23l-393 393c-4 4-8 5-12 5-4 0-8-1-11-4-7-7-7-17 0-24l62-62c-19-18-36-39-51-62z m136-61c0-33 27-61 61-61 11 0 21 3 30 8l18-19c-14-9-30-14-48-14-48 0-86 38-86 86 0 18 5 35 14 48l19-18c-5-9-8-19-8-30z', + defaultProps: { + width: '20px', + height: '20px', + }, +}); diff --git a/packages/snaps-storybook/src/components/icons/ImportIcon.tsx b/packages/snaps-storybook/src/components/icons/ImportIcon.tsx new file mode 100644 index 0000000000..39b45aac8f --- /dev/null +++ b/packages/snaps-storybook/src/components/icons/ImportIcon.tsx @@ -0,0 +1,11 @@ +import { createIcon } from '@chakra-ui/react'; + +export const ImportIcon = createIcon({ + displayName: 'ImportIcon', + viewBox: '0 0 512 512', + d: 'm256 64c10 0 18 8 18 18l0 207 30-30c7-7 19-7 26 0 7 7 7 19 0 26l-61 60c-7 7-19 7-26 0l-61-60c-7-7-7-19 0-26 7-7 19-7 26 0l30 30 0-207c0-10 8-18 18-18z m63 140c1-10 10-18 20-17 35 3 64 14 83 37 19 23 26 54 26 92l0 2c0 42-8 76-32 99-23 23-58 31-101 31l-118 0c-43 0-78-8-101-31-24-23-32-57-32-99l0-2c0-38 7-69 25-91 19-23 48-34 83-38 10 0 19 7 20 17 0 9-7 18-17 19-29 3-47 11-57 24-11 13-17 35-17 69l0 2c0 38 7 61 21 74 13 13 36 20 75 20l118 0c39 0 62-7 75-20 14-13 21-36 21-74l0-2c0-35-6-56-17-69-11-13-28-22-58-24-10-1-18-10-17-19z', + defaultProps: { + width: '20px', + height: '20px', + }, +}); diff --git a/packages/snaps-storybook/src/components/icons/QuestionIcon.tsx b/packages/snaps-storybook/src/components/icons/QuestionIcon.tsx new file mode 100644 index 0000000000..93c006cf77 --- /dev/null +++ b/packages/snaps-storybook/src/components/icons/QuestionIcon.tsx @@ -0,0 +1,11 @@ +import { createIcon } from '@chakra-ui/react'; + +export const QuestionIcon = createIcon({ + displayName: 'QuestionIcon', + viewBox: '0 0 512 512', + d: 'm456 256c0 113-91 205-204 205-114 0-205-92-205-205 0-113 91-205 205-205 113 0 204 92 204 205z m-204-108c-33 0-63 24-63 58 0 9 8 17 17 17 9 0 17-8 17-17 0-12 11-24 29-24 17 0 28 12 28 24 0 6-4 11-14 17l0 0c-12 8-32 21-32 48l0 5c0 9 8 17 18 17 9 0 17-8 17-17l0-5c0-7 3-12 15-19 11-7 30-20 30-46 0-34-30-58-62-58z m-1 170c-9 0-17 7-17 17 0 9 8 17 17 17l1 0c9 0 17-8 17-17 0-10-8-17-17-17z', + defaultProps: { + width: '16px', + height: '16px', + }, +}); diff --git a/packages/snaps-storybook/src/components/icons/SnapIcon.tsx b/packages/snaps-storybook/src/components/icons/SnapIcon.tsx new file mode 100644 index 0000000000..fa1aeb7762 --- /dev/null +++ b/packages/snaps-storybook/src/components/icons/SnapIcon.tsx @@ -0,0 +1,31 @@ +import type { BoxProps } from '@chakra-ui/react'; +import { Box } from '@chakra-ui/react'; +import type { FunctionComponent } from 'react'; + +export type SnapIconProps = BoxProps; + +export const SnapIcon: FunctionComponent = (props) => ( + + + + + + +); diff --git a/packages/snaps-storybook/src/components/icons/WarningIcon.tsx b/packages/snaps-storybook/src/components/icons/WarningIcon.tsx new file mode 100644 index 0000000000..af38b0c5c6 --- /dev/null +++ b/packages/snaps-storybook/src/components/icons/WarningIcon.tsx @@ -0,0 +1,11 @@ +import { createIcon } from '@chakra-ui/react'; + +export const WarningIcon = createIcon({ + displayName: 'WarningIcon', + viewBox: '0 0 512 512', + d: 'm252 51c-113 0-205 92-205 205 0 113 92 205 205 205 112 0 204-92 204-205 0-113-92-205-204-205z m-16 123c0-8 7-15 16-15 8 0 15 7 15 15l0 102c0 9-7 16-15 16-9 0-16-7-16-16z m34 172c-1 2-2 4-4 6-2 2-4 4-7 5-2 1-5 1-7 1-3 0-6 0-8-1-3-1-5-3-7-5-2-2-3-4-4-6-1-3-2-5-2-8 0-3 1-5 2-8 1-2 2-5 4-7 2-1 4-3 7-4 5-2 10-2 15 0 3 1 5 3 7 4 2 2 3 5 4 7 1 3 2 5 2 8 0 3-1 5-2 8z', + defaultProps: { + width: '16px', + height: '16px', + }, +}); diff --git a/packages/snaps-storybook/src/components/icons/index.ts b/packages/snaps-storybook/src/components/icons/index.ts new file mode 100644 index 0000000000..9532e8506c --- /dev/null +++ b/packages/snaps-storybook/src/components/icons/index.ts @@ -0,0 +1,12 @@ +export * from './ArrowDownIcon'; +export * from './CheckBoldIcon'; +export * from './CopyIcon'; +export * from './CopySuccessIcon'; +export * from './DangerIcon'; +export * from './ExportIcon'; +export * from './EyeIcon'; +export * from './EyeSlashIcon'; +export * from './ImportIcon'; +export * from './QuestionIcon'; +export * from './SnapIcon'; +export * from './WarningIcon'; diff --git a/packages/snaps-storybook/src/components/index.ts b/packages/snaps-storybook/src/components/index.ts new file mode 100644 index 0000000000..31f71acd1f --- /dev/null +++ b/packages/snaps-storybook/src/components/index.ts @@ -0,0 +1,3 @@ +export * from './ErrorBoundary'; +export * from './Renderer'; +export * from './snaps'; diff --git a/packages/snaps-storybook/src/components/snaps/address/Address.tsx b/packages/snaps-storybook/src/components/snaps/address/Address.tsx new file mode 100644 index 0000000000..85946ae086 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/address/Address.tsx @@ -0,0 +1,31 @@ +import { Flex, Text } from '@chakra-ui/react'; +import type { AddressProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import { Jazzicon } from './components'; + +/** + * Get a truncated version of the address. + * + * @param address - The address to truncate. + * @returns The truncated address. + */ +function getTruncatedAddress(address: string): string { + return `${address.slice(0, 5)}...${address.slice(-3)}`; +} + +/** + * The address component. See {@link AddressProps} for the props. + * + * @param props - The address props. + * @param props.address - The address to display. + * @returns The rendered address. + */ +export const Address: FunctionComponent = ({ address }) => { + return ( + + + {getTruncatedAddress(address)} + + ); +}; diff --git a/packages/snaps-storybook/src/components/snaps/address/components/Jazzicon.tsx b/packages/snaps-storybook/src/components/snaps/address/components/Jazzicon.tsx new file mode 100644 index 0000000000..027b1de0ee --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/address/components/Jazzicon.tsx @@ -0,0 +1,65 @@ +import type { BoxProps } from '@chakra-ui/react'; +import { Box } from '@chakra-ui/react'; +import jazzicon from '@metamask/jazzicon'; +import type { FunctionComponent } from 'react'; +import { useEffect, useRef } from 'react'; + +/** + * The props for the {@link Jazzicon} component. + * + * @see BoxProps + */ +export type JazziconProps = BoxProps & { + /** + * The size of the Jazzicon. + */ + size?: number; + + /** + * The Ethereum address to display the Jazzicon for. + */ + address: string; +}; + +/** + * Get a seed from an Ethereum address for the Jazzicon. + * + * @param address - The address to get the seed from. + * @returns The seed for the Jazzicon. + */ +function getAddressSeed(address: string): number { + const value = address.slice(2, 10); + return parseInt(value, 16); +} + +/** + * A Jazzicon component, which is used to display a Jazzicon for an Ethereum + * address. + * + * @param props - The props of the component. + * @param props.size - The size of the Jazzicon. + * @param props.address - The Ethereum address to display the Jazzicon for. + * @param props.props - Props to forward to the {@link Box} component. + * @returns A Jazzicon element. + */ +export const Jazzicon: FunctionComponent = ({ + size = 32, + address, + ...props +}) => { + const ref = useRef(null); + + // eslint-disable-next-line consistent-return + useEffect(() => { + if (ref.current) { + const element = jazzicon(size, getAddressSeed(address)); + ref.current.appendChild(element); + + return () => { + ref.current?.removeChild(element); + }; + } + }, [ref, address]); + + return ; +}; diff --git a/packages/snaps-storybook/src/components/snaps/address/components/index.ts b/packages/snaps-storybook/src/components/snaps/address/components/index.ts new file mode 100644 index 0000000000..f049986c37 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/address/components/index.ts @@ -0,0 +1 @@ +export * from './Jazzicon'; diff --git a/packages/snaps-storybook/src/components/snaps/address/index.ts b/packages/snaps-storybook/src/components/snaps/address/index.ts new file mode 100644 index 0000000000..3927510ded --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/address/index.ts @@ -0,0 +1 @@ +export { Address as Component } from './Address'; diff --git a/packages/snaps-storybook/src/components/snaps/bold/Bold.tsx b/packages/snaps-storybook/src/components/snaps/bold/Bold.tsx new file mode 100644 index 0000000000..d57421c71a --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/bold/Bold.tsx @@ -0,0 +1,13 @@ +import type { BoldProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import type { RenderProps } from '../../Renderer'; + +export const Bold: FunctionComponent> = ({ + children, + Renderer, +}) => ( + + + +); diff --git a/packages/snaps-storybook/src/components/snaps/bold/index.ts b/packages/snaps-storybook/src/components/snaps/bold/index.ts new file mode 100644 index 0000000000..1f712b0d75 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/bold/index.ts @@ -0,0 +1 @@ +export { Bold as Component } from './Bold'; diff --git a/packages/snaps-storybook/src/components/snaps/box/Box.tsx b/packages/snaps-storybook/src/components/snaps/box/Box.tsx new file mode 100644 index 0000000000..f1a32fea08 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/box/Box.tsx @@ -0,0 +1,64 @@ +import type { FlexProps } from '@chakra-ui/react'; +import { Flex } from '@chakra-ui/react'; +import type { BoxProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import type { RenderProps } from '../../Renderer'; + +/** + * Get the flex props (direction and alignment) based on the Box props. + * + * @param props - The Box props. + * @param props.alignment - The Box alignment. + * @param props.direction - The Box direction. + * @returns The flex props. + * @example + * const props = { alignment: 'center', direction: 'vertical' }; + * const flexProps = getFlexProps(props); + * // => { direction: 'column', alignItems: 'center' } + * @example + * const props = { alignment: 'space-between', direction: 'horizontal' }; + * const flexProps = getFlexProps(props); + * // => { direction: 'row', justifyContent: 'space-between', alignItems: 'center' } + */ +function getFlexProps({ + alignment, + direction, +}: Pick): FlexProps { + if (direction === 'horizontal') { + return { + direction: 'row', + justifyContent: alignment, + alignItems: 'center', + }; + } + + return { + direction: 'column', + alignItems: alignment, + }; +} + +/** + * The box component. See {@link BoxProps} for the props. + * + * @param props - The box props. + * @param props.direction - The box direction. + * @param props.alignment - The box alignment. + * @param props.children - The box content. + * @param props.Renderer - The Renderer component to use to render nested + * elements. + * @returns The rendered box. + */ +export const Box: FunctionComponent> = ({ + direction, + alignment, + children, + Renderer, +}) => { + return ( + + + + ); +}; diff --git a/packages/snaps-storybook/src/components/snaps/box/index.ts b/packages/snaps-storybook/src/components/snaps/box/index.ts new file mode 100644 index 0000000000..87e6c428ab --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/box/index.ts @@ -0,0 +1 @@ +export { Box as Component } from './Box'; diff --git a/packages/snaps-storybook/src/components/snaps/button/Button.styles.ts b/packages/snaps-storybook/src/components/snaps/button/Button.styles.ts new file mode 100644 index 0000000000..6b437ad162 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/button/Button.styles.ts @@ -0,0 +1,71 @@ +import { defineStyle, defineStyleConfig } from '@chakra-ui/react'; + +export const styles = defineStyleConfig({ + baseStyle: defineStyle({ + background: 'none', + borderRadius: '0', + maxWidth: 'fit-content', + _disabled: { + opacity: 1, + }, + }), + + variants: { + primary: defineStyle({ + color: 'info.default', + _disabled: { + color: 'text.muted', + }, + }), + + destructive: defineStyle({ + color: 'error.default', + _disabled: { + color: 'text.muted', + }, + }), + + solid: defineStyle({ + color: 'background.default', + backgroundColor: 'text.default', + _disabled: { + backgroundColor: 'text.muted', + }, + + _hover: { + backgroundColor: 'text.alternative', + }, + }), + }, + + sizes: { + text: defineStyle({ + lineHeight: 'short', + fontSize: 'sm', + fontWeight: '500', + margin: 0, + padding: 0, + paddingInlineStart: 0, + paddingInlineEnd: 0, + }), + + large: defineStyle({ + lineHeight: 'short', + fontSize: 'sm', + fontWeight: '500', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + paddingX: '4', + height: '48px', + borderRadius: 'full', + border: '1px solid', + borderColor: 'currentColor', + }), + }, + + defaultProps: { + variant: 'primary', + size: 'text', + }, +}); diff --git a/packages/snaps-storybook/src/components/snaps/button/Button.tsx b/packages/snaps-storybook/src/components/snaps/button/Button.tsx new file mode 100644 index 0000000000..c9bd11576a --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/button/Button.tsx @@ -0,0 +1,26 @@ +import { Button as ChakraButton } from '@chakra-ui/react'; +import type { ButtonProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +/** + * The button component. See {@link ButtonProps} for the props. + * + * @param props - The button props. + * @param props.name - The button name. This is not displayed to the user. + * @param props.type - The button type. Defaults to `'button'`. + * @param props.variant - The button variant. + * @param props.disabled - Whether the button is disabled. + * @param props.children - The button label. + * @returns The rendered button. + */ +export const Button: FunctionComponent = ({ + name, + type = 'button', + variant, + disabled = false, + children, +}) => ( + + {children} + +); diff --git a/packages/snaps-storybook/src/components/snaps/button/index.ts b/packages/snaps-storybook/src/components/snaps/button/index.ts new file mode 100644 index 0000000000..3afa3a1062 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/button/index.ts @@ -0,0 +1,2 @@ +export { Button as Component } from './Button'; +export { styles } from './Button.styles'; diff --git a/packages/snaps-storybook/src/components/snaps/card/Card.styles.ts b/packages/snaps-storybook/src/components/snaps/card/Card.styles.ts new file mode 100644 index 0000000000..84e151aacb --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/card/Card.styles.ts @@ -0,0 +1,42 @@ +import { cardAnatomy } from '@chakra-ui/anatomy'; +import { createMultiStyleConfigHelpers } from '@chakra-ui/react'; + +const { definePartsStyle, defineMultiStyleConfig } = + createMultiStyleConfigHelpers(cardAnatomy.keys); + +export const styles = defineMultiStyleConfig({ + baseStyle: definePartsStyle({ + container: { + gap: '2', + }, + + header: { + display: 'flex', + justifyContent: 'space-between', + gap: '2', + padding: '0', + color: 'text.default', + fontSize: 'sm', + fontWeight: '500', + }, + + body: { + padding: '0', + color: 'text.alternative', + fontSize: 'sm', + }, + }), + + variants: { + clear: definePartsStyle({ + container: { + background: 'transparent', + boxShadow: 'none', + }, + }), + }, + + defaultProps: { + variant: 'clear', + }, +}); diff --git a/packages/snaps-storybook/src/components/snaps/card/Card.tsx b/packages/snaps-storybook/src/components/snaps/card/Card.tsx new file mode 100644 index 0000000000..8d2314524e --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/card/Card.tsx @@ -0,0 +1,56 @@ +import { + Card as ChakraCard, + CardBody, + CardHeader, + Flex, + Image, + Text, +} from '@chakra-ui/react'; +import type { CardProps } from '@metamask/snaps-sdk/jsx'; +import { bytesToBase64, stringToBytes } from '@metamask/utils'; +import type { FunctionComponent } from 'react'; + +import type { RenderProps } from '../../Renderer'; + +/** + * The card component renders a card with a title, description, and value. + * + * @param props - The props of the component. + * @param props.image - The image to show as part of the card. If provided, this + * must be an SVG string. + * @param props.title - The title of the card. + * @param props.description - The description to show below the title. + * @param props.value - The value to show on the right side. + * @param props.extra - An additional value to show below the value. + * @returns The card element. + * @see CardProps + */ +export const Card: FunctionComponent> = ({ + image, + title, + description, + value, + extra, +}) => ( + + {image && ( + {title} + )} + + + {title} + {value} + + + {description ? {description} : } + {extra ? {extra} : } + + + +); diff --git a/packages/snaps-storybook/src/components/snaps/card/index.ts b/packages/snaps-storybook/src/components/snaps/card/index.ts new file mode 100644 index 0000000000..6b19a02615 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/card/index.ts @@ -0,0 +1,2 @@ +export { Card as Component } from './Card'; +export { styles } from './Card.styles'; diff --git a/packages/snaps-storybook/src/components/snaps/checkbox/Checkbox.styles.ts b/packages/snaps-storybook/src/components/snaps/checkbox/Checkbox.styles.ts new file mode 100644 index 0000000000..b9da91cb5e --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/checkbox/Checkbox.styles.ts @@ -0,0 +1,104 @@ +import { checkboxAnatomy, switchAnatomy } from '@chakra-ui/anatomy'; +import { createMultiStyleConfigHelpers, cssVar } from '@chakra-ui/react'; + +const { definePartsStyle, defineMultiStyleConfig } = + createMultiStyleConfigHelpers(checkboxAnatomy.keys); + +const { + definePartsStyle: defineSwitchPartsStyle, + defineMultiStyleConfig: defineSwitchMultiStyleConfig, +} = createMultiStyleConfigHelpers(switchAnatomy.keys); + +const width = cssVar('switch-track-width'); +const height = cssVar('switch-track-height'); + +export const styles = { + Checkbox: defineMultiStyleConfig({ + baseStyle: definePartsStyle({ + control: { + borderColor: 'border.default', + borderRadius: 'base', + + _hover: { + background: 'background.defaultHover', + color: 'background.defaultHover', + }, + + _focus: { + borderColor: 'primary.default', + }, + + _checked: { + background: 'primary.default', + borderColor: 'primary.default', + _hover: { + background: 'primary.alternative', + borderColor: 'primary.alternative', + }, + }, + }, + + label: { + fontSize: 'sm', + }, + }), + + sizes: { + md: definePartsStyle({ + control: { + width: '20px', + height: '20px', + }, + + label: { + fontSize: 'sm', + }, + }), + }, + + defaultProps: { + size: 'md', + }, + }), + + Switch: defineSwitchMultiStyleConfig({ + baseStyle: defineSwitchPartsStyle({ + container: { + display: 'flex', + alignItems: 'center', + }, + + track: { + _checked: { + background: 'primary.default', + }, + }, + }), + + sizes: { + md: defineSwitchPartsStyle({ + container: { + [width.variable]: '32px', + [height.variable]: '18px', + }, + + track: { + padding: '1', + }, + + thumb: { + width: '18px', + height: '18px', + }, + + label: { + fontSize: 'sm', + }, + }), + }, + + defaultProps: { + size: 'md', + }, + }), +}; diff --git a/packages/snaps-storybook/src/components/snaps/checkbox/Checkbox.tsx b/packages/snaps-storybook/src/components/snaps/checkbox/Checkbox.tsx new file mode 100644 index 0000000000..f8da719737 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/checkbox/Checkbox.tsx @@ -0,0 +1,43 @@ +import { Checkbox as ChakraCheckbox, Switch } from '@chakra-ui/react'; +import type { CheckboxProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import { CheckBoldIcon } from '../../icons'; +import type { RenderProps } from '../../Renderer'; + +/** + * A checkbox element, which renders a checkbox input field. + * + * @param props - The props of the component. + * @param props.name - The name of the checkbox input field. This is used to + * populate the state in the form data. + * @param props.checked - Whether the checkbox is checked or not. + * @param props.label - The label of the checkbox. + * @param props.variant - The variant of the checkbox. + * @returns A checkbox element. + */ +export const Checkbox: FunctionComponent> = ({ + name, + checked, + label, + variant, +}) => { + if (variant === 'toggle') { + return ( + + {label} + + ); + } + + return ( + } + iconSize="20px" + > + {label} + + ); +}; diff --git a/packages/snaps-storybook/src/components/snaps/checkbox/index.ts b/packages/snaps-storybook/src/components/snaps/checkbox/index.ts new file mode 100644 index 0000000000..09beb45b24 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/checkbox/index.ts @@ -0,0 +1,2 @@ +export { Checkbox as Component } from './Checkbox'; +export { styles } from './Checkbox.styles'; diff --git a/packages/snaps-storybook/src/components/snaps/container/Container.tsx b/packages/snaps-storybook/src/components/snaps/container/Container.tsx new file mode 100644 index 0000000000..3a992196b4 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/container/Container.tsx @@ -0,0 +1,24 @@ +import { Box } from '@chakra-ui/react'; +import type { ContainerProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import type { RenderProps } from '../../Renderer'; + +/** + * The container component. It simply renders the children in a box. + * + * @param props - The component props. + * @param props.children - The children to render in the container. + * @param props.Renderer - The renderer to use for rendering the children. + * @returns The container element. + */ +export const Container: FunctionComponent> = ({ + children, + Renderer, +}) => { + return ( + + + + ); +}; diff --git a/packages/snaps-storybook/src/components/snaps/container/index.ts b/packages/snaps-storybook/src/components/snaps/container/index.ts new file mode 100644 index 0000000000..700c5b7d9f --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/container/index.ts @@ -0,0 +1 @@ +export { Container as Component } from './Container'; diff --git a/packages/snaps-storybook/src/components/snaps/copyable/Copyable.styles.ts b/packages/snaps-storybook/src/components/snaps/copyable/Copyable.styles.ts new file mode 100644 index 0000000000..c73d2520cc --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/copyable/Copyable.styles.ts @@ -0,0 +1,22 @@ +import { defineStyle, defineStyleConfig } from '@chakra-ui/react'; + +export const styles = defineStyleConfig({ + baseStyle: defineStyle({ + display: 'flex', + gap: '2', + justifyContent: 'space-between', + borderRadius: 'lg', + padding: '2', + fontSize: 'sm', + color: 'text.alternative', + background: 'background.alternative', + overflowY: 'hidden', + }), + + variants: { + sensitive: defineStyle({ + color: 'error.default', + background: 'error.muted', + }), + }, +}); diff --git a/packages/snaps-storybook/src/components/snaps/copyable/Copyable.tsx b/packages/snaps-storybook/src/components/snaps/copyable/Copyable.tsx new file mode 100644 index 0000000000..845f944008 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/copyable/Copyable.tsx @@ -0,0 +1,71 @@ +import { Box, Text, useStyleConfig } from '@chakra-ui/react'; +import type { CopyableProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; +import { useState } from 'react'; + +import type { RenderProps } from '../../Renderer'; +import { More, Copy, Sensitive } from './components'; + +/** + * A copyable element, which shows a value that can be copied to the clipboard. + * If the value is sensitive, it can be revealed by the user. + * + * See {@link CopyableProps} for the props. + * + * @param props - The component props. + * @param props.sensitive - Whether the value is sensitive and should be + * obscured. + * @param props.value - The value to display. + * @returns The copyable element. + */ +export const Copyable: FunctionComponent> = ({ + sensitive, + value, +}) => { + const [isExpanded, setExpanded] = useState(false); + const [isRevealed, setRevealed] = useState(false); + + const styles = useStyleConfig('Copyable', { + variant: isRevealed && sensitive ? 'sensitive' : 'default', + }); + + const handleExpand = () => { + setExpanded(true); + }; + + const handleReveal = () => { + setRevealed(true); + }; + + const handleHide = () => { + setExpanded(false); + setRevealed(false); + }; + + if (sensitive && !isRevealed) { + return ( + + + Reveal sensitive content + + ); + } + + return ( + + {sensitive && } + + + + {value} + + + + + + ); +}; diff --git a/packages/snaps-storybook/src/components/snaps/copyable/components/Copy.tsx b/packages/snaps-storybook/src/components/snaps/copyable/components/Copy.tsx new file mode 100644 index 0000000000..2643e3f2aa --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/copyable/components/Copy.tsx @@ -0,0 +1,54 @@ +import { Box } from '@chakra-ui/react'; +import type { FunctionComponent } from 'react'; +import { useEffect, useState } from 'react'; + +import { CopyIcon, CopySuccessIcon } from '../../../icons'; + +/** + * The props for the {@link Copy} component. + */ +export type CopyProps = { + /** + * The value to write to the clipboard. + */ + value: string; +}; + +/** + * A copy icon, that writes the value to the clipboard when clicked. + * + * @param props - The component props. + * @param props.value - The value to write to the clipboard. + * @returns The copy element. + */ +export const Copy: FunctionComponent = ({ value }) => { + const [isCopied, setCopied] = useState(false); + + // eslint-disable-next-line consistent-return + useEffect(() => { + if (isCopied) { + const timeout = setTimeout(() => { + setCopied(false); + }, 2000); + + return () => clearTimeout(timeout); + } + }, [isCopied]); + + const handleCopy = () => { + navigator.clipboard + .writeText(value) + .then(() => { + setCopied(true); + }) + .catch(() => { + // noop + }); + }; + + return ( + + {isCopied ? : } + + ); +}; diff --git a/packages/snaps-storybook/src/components/snaps/copyable/components/More.tsx b/packages/snaps-storybook/src/components/snaps/copyable/components/More.tsx new file mode 100644 index 0000000000..95b959fcbc --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/copyable/components/More.tsx @@ -0,0 +1,88 @@ +import type { ButtonProps } from '@chakra-ui/react'; +import { Box, Button } from '@chakra-ui/react'; +import type { FunctionComponent, ReactNode } from 'react'; + +import { useOverflow } from '../hooks'; + +/** + * The props for the {@link More} component. + * + * @see ButtonProps + */ +export type MoreProps = ButtonProps & { + /** + * The content to render. + */ + children: ReactNode; + + /** + * Whether the content is expanded. + */ + isExpanded: boolean; + + /** + * Whether the content is sensitive. + */ + sensitive?: boolean; +}; + +/** + * Get the gradient for the more button. + * + * @param sensitive - Whether the content is sensitive. + * @returns The gradient for the more button. + */ +function getGradient(sensitive: boolean) { + return sensitive + ? 'linear(to right, transparent 0%, error.muted 33%)' + : 'linear(to right, transparent 0%, background.alternative 33%)'; +} + +/** + * The more component. This renders the content and a more button if the content + * is overflowing (i.e., the content is taller than the container). + * + * @param props - The component props. + * @param props.children - The content to render. + * @param props.isExpanded - Whether the content is expanded. + * @param props.sensitive - Whether the content is sensitive. + * @returns The more element. + */ +export const More: FunctionComponent = ({ + children, + isExpanded, + sensitive = false, + ...props +}) => { + const { contentRef, isOverflow } = useOverflow(); + + return ( + + {children} + {isOverflow && !isExpanded && ( + + + + )} + + ); +}; diff --git a/packages/snaps-storybook/src/components/snaps/copyable/components/Sensitive.tsx b/packages/snaps-storybook/src/components/snaps/copyable/components/Sensitive.tsx new file mode 100644 index 0000000000..48394fbb13 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/copyable/components/Sensitive.tsx @@ -0,0 +1,46 @@ +import { Tooltip } from '@chakra-ui/react'; +import type { FunctionComponent } from 'react'; + +import { EyeIcon, EyeSlashIcon } from '../../../icons'; + +/** + * The props for the {@link Sensitive} component. + */ +export type SensitiveProps = { + /** + * Whether the sensitive content is revealed. + */ + isRevealed: boolean; + + /** + * A callback to hide the sensitive content. + */ + onHide?: () => void; +}; + +/** + * A sensitive content icon, that reveals and hides the content when clicked. + * + * @param props - The component props. + * @param props.isRevealed - Whether the sensitive content is revealed. + * @param props.onHide - A callback to hide the sensitive content. + * @returns The sensitive element. + */ +export const Sensitive: FunctionComponent = ({ + isRevealed, + onHide, +}) => { + if (isRevealed) { + return ( + + + + ); + } + + return ( + + + + ); +}; diff --git a/packages/snaps-storybook/src/components/snaps/copyable/components/index.ts b/packages/snaps-storybook/src/components/snaps/copyable/components/index.ts new file mode 100644 index 0000000000..5d3ce256f6 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/copyable/components/index.ts @@ -0,0 +1,3 @@ +export * from './Copy'; +export * from './More'; +export * from './Sensitive'; diff --git a/packages/snaps-storybook/src/components/snaps/copyable/hooks/index.ts b/packages/snaps-storybook/src/components/snaps/copyable/hooks/index.ts new file mode 100644 index 0000000000..f0fe5a395c --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/copyable/hooks/index.ts @@ -0,0 +1 @@ +export * from './useOverflow'; diff --git a/packages/snaps-storybook/src/components/snaps/copyable/hooks/useOverflow.ts b/packages/snaps-storybook/src/components/snaps/copyable/hooks/useOverflow.ts new file mode 100644 index 0000000000..700fcad980 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/copyable/hooks/useOverflow.ts @@ -0,0 +1,50 @@ +import type { RefObject } from 'react'; +import { useEffect, useRef, useState } from 'react'; + +/** + * The overflow state. + */ +export type Overflow = { + /** + * The reference to the content container. This should be attached to the + * content container with `overflow: hidden`. + */ + contentRef: RefObject; + + /** + * Whether the content is overflowing. + */ + isOverflow: boolean; +}; + +/** + * A hook to determine if the content is overflowing. + * + * Note: The `contentRef` should be attached to the content container with + * `overflow: hidden`. + * + * @returns The overflow state. + * @example + * const { contentRef, isOverflow } = useOverflow(); + * + * return ( + * + * ... + * {isOverflow && } + * + * ); + */ +export const useOverflow = (): Overflow => { + const contentRef = useRef(null); + const [isOverflow, setOverflow] = useState(false); + + useEffect(() => { + if (contentRef.current) { + setOverflow( + contentRef.current.offsetHeight < contentRef.current.scrollHeight, + ); + } + }, [contentRef]); + + return { contentRef, isOverflow }; +}; diff --git a/packages/snaps-storybook/src/components/snaps/copyable/index.ts b/packages/snaps-storybook/src/components/snaps/copyable/index.ts new file mode 100644 index 0000000000..63a9b5fa52 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/copyable/index.ts @@ -0,0 +1,2 @@ +export { Copyable as Component } from './Copyable'; +export { styles } from './Copyable.styles'; diff --git a/packages/snaps-storybook/src/components/snaps/divider/Divider.styles.ts b/packages/snaps-storybook/src/components/snaps/divider/Divider.styles.ts new file mode 100644 index 0000000000..2be86906ba --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/divider/Divider.styles.ts @@ -0,0 +1,7 @@ +import { defineStyle, defineStyleConfig } from '@chakra-ui/react'; + +export const styles = defineStyleConfig({ + baseStyle: defineStyle({ + borderColor: 'border.default', + }), +}); diff --git a/packages/snaps-storybook/src/components/snaps/divider/Divider.tsx b/packages/snaps-storybook/src/components/snaps/divider/Divider.tsx new file mode 100644 index 0000000000..cec06670d0 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/divider/Divider.tsx @@ -0,0 +1,12 @@ +import { Divider as ChakraDivider } from '@chakra-ui/react'; +import type { FunctionComponent } from 'react'; + +/** + * A divider component, which is used to create a horizontal line between + * elements. + * + * This component does not have any props. + * + * @returns A divider element. + */ +export const Divider: FunctionComponent = () => ; diff --git a/packages/snaps-storybook/src/components/snaps/divider/index.ts b/packages/snaps-storybook/src/components/snaps/divider/index.ts new file mode 100644 index 0000000000..96aa6ac3ba --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/divider/index.ts @@ -0,0 +1,2 @@ +export { Divider as Component } from './Divider'; +export { styles } from './Divider.styles'; diff --git a/packages/snaps-storybook/src/components/snaps/dropdown/Dropdown.styles.ts b/packages/snaps-storybook/src/components/snaps/dropdown/Dropdown.styles.ts new file mode 100644 index 0000000000..0dde1c590e --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/dropdown/Dropdown.styles.ts @@ -0,0 +1,44 @@ +import { selectAnatomy } from '@chakra-ui/anatomy'; +import { createMultiStyleConfigHelpers } from '@chakra-ui/react'; + +const { definePartsStyle, defineMultiStyleConfig } = + createMultiStyleConfigHelpers(selectAnatomy.keys); + +export const styles = { + Select: defineMultiStyleConfig({ + baseStyle: definePartsStyle({ + field: { + color: 'text.default', + fontSize: 'sm', + paddingX: '4', + paddingY: '2', + }, + }), + + variants: { + outline: definePartsStyle({ + field: { + background: 'background.default', + border: '1px solid', + borderColor: 'border.default', + _focus: { + outline: '5px auto', + outlineColor: 'primary.default', + outlineOffset: '0', + }, + _placeholder: { + color: 'text.alternative', + }, + _invalid: { + borderColor: 'error.default', + boxShadow: 'none', + }, + }, + }), + }, + }), + + defaultProps: { + variant: 'outline', + }, +}; diff --git a/packages/snaps-storybook/src/components/snaps/dropdown/Dropdown.tsx b/packages/snaps-storybook/src/components/snaps/dropdown/Dropdown.tsx new file mode 100644 index 0000000000..6281931364 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/dropdown/Dropdown.tsx @@ -0,0 +1,33 @@ +import { Select } from '@chakra-ui/react'; +import type { DropdownProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import { ArrowDownIcon } from '../../icons'; +import type { RenderProps } from '../../Renderer'; + +/** + * A dropdown element, which renders a dropdown input field. + * + * @param props - The props of the component. + * @param props.name - The name of the dropdown input field. This is used to + * populate the state in the form data. + * @param props.value - The selected value of the dropdown. + * @param props.children - The dropdown options. + * @param props.Renderer - The renderer component to render the children. + * @returns A dropdown element. + */ +export const Dropdown: FunctionComponent> = ({ + name, + value, + children, + Renderer, +}) => ( + +); diff --git a/packages/snaps-storybook/src/components/snaps/dropdown/index.ts b/packages/snaps-storybook/src/components/snaps/dropdown/index.ts new file mode 100644 index 0000000000..7bf9a2cb3e --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/dropdown/index.ts @@ -0,0 +1,2 @@ +export { Dropdown as Component } from './Dropdown'; +export { styles } from './Dropdown.styles'; diff --git a/packages/snaps-storybook/src/components/snaps/field/Field.styles.ts b/packages/snaps-storybook/src/components/snaps/field/Field.styles.ts new file mode 100644 index 0000000000..148f13ca0b --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/field/Field.styles.ts @@ -0,0 +1,43 @@ +import { formAnatomy, formErrorAnatomy } from '@chakra-ui/anatomy'; +import { + createMultiStyleConfigHelpers, + defineStyleConfig, +} from '@chakra-ui/react'; + +const { definePartsStyle, defineMultiStyleConfig } = + createMultiStyleConfigHelpers(formAnatomy.keys); + +const { + definePartsStyle: defineErrorPartsStyle, + defineMultiStyleConfig: defineErrorMultiStyleConfig, +} = createMultiStyleConfigHelpers(formErrorAnatomy.keys); + +export const styles = { + FormControl: defineMultiStyleConfig({ + baseStyle: definePartsStyle({ + helperText: { + color: 'error.default', + marginTop: '1', + fontSize: '2xs', + }, + }), + }), + + FormError: defineErrorMultiStyleConfig({ + baseStyle: defineErrorPartsStyle({ + text: { + color: 'error.default', + fontSize: '2xs', + marginTop: '1', + }, + }), + }), + + FormLabel: defineStyleConfig({ + baseStyle: { + color: 'text.default', + fontSize: 'sm', + marginBottom: '0', + }, + }), +}; diff --git a/packages/snaps-storybook/src/components/snaps/field/Field.tsx b/packages/snaps-storybook/src/components/snaps/field/Field.tsx new file mode 100644 index 0000000000..ad68b63e79 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/field/Field.tsx @@ -0,0 +1,30 @@ +import { FormControl, FormErrorMessage, FormLabel } from '@chakra-ui/react'; +import type { FieldProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import type { RenderProps } from '../../Renderer'; +import { Input } from './components'; + +/** + * The field component, which wraps an input element with a label and optional + * error message. See the {@link FieldProps} type for the props. + * + * @param props - The props of the component. + * @param props.label - The label of the field. + * @param props.error - The error message of the field. + * @param props.children - The input field to render inside the field. + * @param props.Renderer - The renderer to use for the input field. + * @returns The field element. + */ +export const Field: FunctionComponent> = ({ + label, + error, + children, + Renderer, +}) => ( + + {label} + + {error && {error}} + +); diff --git a/packages/snaps-storybook/src/components/snaps/field/components/Input.tsx b/packages/snaps-storybook/src/components/snaps/field/components/Input.tsx new file mode 100644 index 0000000000..d02e8b8d42 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/field/components/Input.tsx @@ -0,0 +1,62 @@ +import { InputGroup, InputRightElement } from '@chakra-ui/react'; +import type { FieldProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; +import { useEffect, useState, useRef } from 'react'; + +import type { RendererProps } from '../../../Renderer'; + +/** + * The props for the {@link Input} component. + */ +export type InputProps = { + /** + * The input element to render. + */ + element: FieldProps['children']; + + /** + * The renderer to use for the input field. + */ + // eslint-disable-next-line @typescript-eslint/naming-convention + Renderer: FunctionComponent; +}; + +/** + * This is a wrapper of the input component, which allows for rendering + * different types of input fields. + * + * @param props - The component props. + * @param props.element - The input element to render. + * @param props.Renderer - The renderer to use for the input field. + * @returns The rendered input component. + */ +export const Input: FunctionComponent = ({ element, Renderer }) => { + const ref = useRef(null); + const [width, setWidth] = useState(0); + + useEffect(() => { + if (ref.current) { + setWidth(ref.current.offsetWidth); + } + }, [element, ref]); + + if (Array.isArray(element)) { + const [input, button] = element; + return ( + + + + + + + ); + } + + return ; +}; diff --git a/packages/snaps-storybook/src/components/snaps/field/components/index.ts b/packages/snaps-storybook/src/components/snaps/field/components/index.ts new file mode 100644 index 0000000000..ba9fe7ebc6 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/field/components/index.ts @@ -0,0 +1 @@ +export * from './Input'; diff --git a/packages/snaps-storybook/src/components/snaps/field/index.ts b/packages/snaps-storybook/src/components/snaps/field/index.ts new file mode 100644 index 0000000000..2c0bdd061d --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/field/index.ts @@ -0,0 +1,2 @@ +export { Field as Component } from './Field'; +export { styles } from './Field.styles'; diff --git a/packages/snaps-storybook/src/components/snaps/file-input/FileInput.styles.ts b/packages/snaps-storybook/src/components/snaps/file-input/FileInput.styles.ts new file mode 100644 index 0000000000..6aee8032b8 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/file-input/FileInput.styles.ts @@ -0,0 +1,41 @@ +import { defineStyle, defineStyleConfig } from '@chakra-ui/react'; + +export const styles = defineStyleConfig({ + baseStyle: defineStyle({ + cursor: 'pointer', + background: 'background.alternative', + borderRadius: 'lg', + border: '1px solid', + borderColor: 'border.default', + display: 'flex', + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + padding: '4', + gap: '1', + textAlign: 'center', + color: 'icon.alternative', + fontWeight: '500', + + _active: { + backgroundColor: 'background.alternativeHover', + color: 'primary.default', + }, + + _selected: { + color: 'text.default', + }, + }), + + variants: { + compact: { + width: 'fit-content', + height: 'fit-content', + padding: '1', + + _selected: { + color: 'icon.alternative', + }, + }, + }, +}); diff --git a/packages/snaps-storybook/src/components/snaps/file-input/FileInput.tsx b/packages/snaps-storybook/src/components/snaps/file-input/FileInput.tsx new file mode 100644 index 0000000000..6f0d90d792 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/file-input/FileInput.tsx @@ -0,0 +1,90 @@ +import { Box, Text, useStyleConfig } from '@chakra-ui/react'; +import { dataAttr } from '@chakra-ui/utils'; +import type { FileInputProps } from '@metamask/snaps-sdk/jsx'; +import type { ChangeEvent, FunctionComponent, DragEvent } from 'react'; +import { useRef, useState } from 'react'; + +import { ImportIcon } from '../../icons'; +import type { RenderProps } from '../../Renderer'; + +/** + * The file input component renders a drop zone for users to upload files. It + * can also be clicked to open a file picker dialog. + * + * @param props - The props of the component. + * @param props.name - The name of the file input field. This is used to + * identify the state in the form data. + * @param props.accept - The types of files that the file input can accept. This is + * used to filter the files that the user can select when the input field is + * clicked. + * @param props.compact - Whether to render the file input in compact mode. + * @returns The file input element. + */ +export const FileInput: FunctionComponent> = ({ + name, + accept, + compact, +}) => { + const styles = useStyleConfig('FileInput', { + variant: compact ? 'compact' : 'default', + }); + + const ref = useRef(null); + const [isActive, setActive] = useState(false); + const [fileName, setFileName] = useState(null); + + const handleClick = () => { + ref.current?.click(); + }; + + const handleChange = (event: ChangeEvent) => { + const file = event.target.files?.[0] ?? null; + setFileName(file?.name ?? null); + }; + + const handleDragOver = (event: DragEvent) => { + event.preventDefault(); + setActive(true); + }; + + const handleDragLeave = (event: DragEvent) => { + event.preventDefault(); + setActive(false); + }; + + const handleDrop = (event: DragEvent) => { + event.preventDefault(); + setActive(false); + + const file = event.dataTransfer?.files?.[0] ?? null; + setFileName(file?.name ?? null); + }; + + return ( + + + + {!compact && + (fileName ? ( + {fileName} + ) : ( + Drop your file here + ))} + + ); +}; diff --git a/packages/snaps-storybook/src/components/snaps/file-input/index.ts b/packages/snaps-storybook/src/components/snaps/file-input/index.ts new file mode 100644 index 0000000000..b1ebf0cecb --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/file-input/index.ts @@ -0,0 +1,2 @@ +export { FileInput as Component } from './FileInput'; +export { styles } from './FileInput.styles'; diff --git a/packages/snaps-storybook/src/components/snaps/footer/Footer.tsx b/packages/snaps-storybook/src/components/snaps/footer/Footer.tsx new file mode 100644 index 0000000000..061737c232 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/footer/Footer.tsx @@ -0,0 +1,31 @@ +import { Box } from '@chakra-ui/react'; +import type { FooterProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import type { RenderProps } from '../../Renderer'; +import { Buttons } from './components'; + +/** + * The footer component. See {@link FooterProps} for the props. + * + * @param props - The component props. + * @param props.children - The footer buttons. + * @param props.Renderer - The Renderer component to use to render nested + * elements. + * @returns The rendered footer. + */ +export const Footer: FunctionComponent> = (props) => { + return ( + + + + ); +}; diff --git a/packages/snaps-storybook/src/components/snaps/footer/components/Button.tsx b/packages/snaps-storybook/src/components/snaps/footer/components/Button.tsx new file mode 100644 index 0000000000..f2817d9176 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/footer/components/Button.tsx @@ -0,0 +1,30 @@ +import { Button as ChakraButton } from '@chakra-ui/react'; +import type { ButtonProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import type { RenderProps } from '../../../Renderer'; + +/** + * A footer button. + * + * @param props - The button props. + * @param props.children - The button label. + * @param props.Renderer - The Renderer component to use to render nested elements. + * @returns The button element. + */ +export const Button: FunctionComponent> = ({ + children, + Renderer, +}) => { + return ( + + + + ); +}; diff --git a/packages/snaps-storybook/src/components/snaps/footer/components/Buttons.tsx b/packages/snaps-storybook/src/components/snaps/footer/components/Buttons.tsx new file mode 100644 index 0000000000..848cff48c2 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/footer/components/Buttons.tsx @@ -0,0 +1,31 @@ +import type { FooterProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import type { RenderProps } from '../../../Renderer'; +import { Button } from './Button'; +import { CancelButton } from './CancelButton'; + +/** + * The footer buttons. + * + * @param props - The component props. + * @param props.children - The footer buttons. + * @param props.Renderer - The Renderer component to use to render nested + * elements. + * @returns The footer buttons element. + */ +export const Buttons: FunctionComponent> = ({ + children, + Renderer, +}) => { + if (Array.isArray(children)) { + return ; + } + + return ( + <> + + + + ); +}; diff --git a/packages/snaps-storybook/src/components/snaps/footer/components/CancelButton.tsx b/packages/snaps-storybook/src/components/snaps/footer/components/CancelButton.tsx new file mode 100644 index 0000000000..84c8592efd --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/footer/components/CancelButton.tsx @@ -0,0 +1,20 @@ +import type { ButtonProps } from '@chakra-ui/react'; +import { Button } from '@chakra-ui/react'; +import type { FunctionComponent } from 'react'; + +export type CancelButtonProps = ButtonProps; + +/** + * A cancel button. + * + * @param props - The button props. + * @param props.children - The button label. + * @returns The cancel button element. + */ +export const CancelButton: FunctionComponent = (props) => { + return ( + + ); +}; diff --git a/packages/snaps-storybook/src/components/snaps/footer/components/index.ts b/packages/snaps-storybook/src/components/snaps/footer/components/index.ts new file mode 100644 index 0000000000..45edde9237 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/footer/components/index.ts @@ -0,0 +1,3 @@ +export * from './Button'; +export * from './Buttons'; +export * from './CancelButton'; diff --git a/packages/snaps-storybook/src/components/snaps/footer/index.ts b/packages/snaps-storybook/src/components/snaps/footer/index.ts new file mode 100644 index 0000000000..397a4d29e9 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/footer/index.ts @@ -0,0 +1 @@ +export { Footer as Component } from './Footer'; diff --git a/packages/snaps-storybook/src/components/snaps/form/Form.tsx b/packages/snaps-storybook/src/components/snaps/form/Form.tsx new file mode 100644 index 0000000000..3c0403f06d --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/form/Form.tsx @@ -0,0 +1,24 @@ +import { Flex } from '@chakra-ui/react'; +import type { FormProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import type { RenderProps } from '../../Renderer'; + +/** + * The form component renders a form element. + * + * @param props - The component props. + * @param props.name - The name of the form. + * @param props.children - The children of the form. + * @param props.Renderer - The renderer to use for rendering the children. + * @returns The form element. + */ +export const Form: FunctionComponent> = ({ + name, + children, + Renderer, +}) => ( + + + +); diff --git a/packages/snaps-storybook/src/components/snaps/form/index.ts b/packages/snaps-storybook/src/components/snaps/form/index.ts new file mode 100644 index 0000000000..3215e0ee77 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/form/index.ts @@ -0,0 +1 @@ +export { Form as Component } from './Form'; diff --git a/packages/snaps-storybook/src/components/snaps/heading/Heading.styles.ts b/packages/snaps-storybook/src/components/snaps/heading/Heading.styles.ts new file mode 100644 index 0000000000..5401274e86 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/heading/Heading.styles.ts @@ -0,0 +1,19 @@ +import { defineStyle, defineStyleConfig } from '@chakra-ui/react'; + +export const styles = defineStyleConfig({ + baseStyle: defineStyle({ + color: 'text.default', + fontWeight: '700', + }), + + sizes: { + md: { + fontSize: 'md', + lineHeight: 'base', + }, + }, + + defaultProps: { + size: 'md', + }, +}); diff --git a/packages/snaps-storybook/src/components/snaps/heading/Heading.tsx b/packages/snaps-storybook/src/components/snaps/heading/Heading.tsx new file mode 100644 index 0000000000..c3a7a729b3 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/heading/Heading.tsx @@ -0,0 +1,25 @@ +import { Heading as ChakraHeading } from '@chakra-ui/react'; +import type { HeadingProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import type { RenderProps } from '../../Renderer'; + +/** + * The heading component. See {@link HeadingProps} for the props. + * + * @param props - The heading props. + * @param props.children - The heading content. + * @param props.Renderer - The Renderer component to use to render nested + * elements. + * @returns The rendered heading. + */ +export const Heading: FunctionComponent> = ({ + children, + Renderer, +}) => { + return ( + + + + ); +}; diff --git a/packages/snaps-storybook/src/components/snaps/heading/index.ts b/packages/snaps-storybook/src/components/snaps/heading/index.ts new file mode 100644 index 0000000000..ec8c1ae504 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/heading/index.ts @@ -0,0 +1,2 @@ +export { Heading as Component } from './Heading'; +export { styles } from './Heading.styles'; diff --git a/packages/snaps-storybook/src/components/snaps/image/Image.tsx b/packages/snaps-storybook/src/components/snaps/image/Image.tsx new file mode 100644 index 0000000000..f60a9c31b8 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/image/Image.tsx @@ -0,0 +1,21 @@ +import { Image as ChakraImage } from '@chakra-ui/react'; +import type { ImageProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import type { RenderProps } from '../../Renderer'; +import { getImage } from '../utils'; + +/** + * The image component, which is used to display SVG images. + * + * @param props - The props of the component. + * @param props.src - The image to display. This must be an SVG string. + * @param props.alt - The alternative text for the image. + * @returns The image element. + */ +export const Image: FunctionComponent> = ({ + src, + alt, +}) => { + return ; +}; diff --git a/packages/snaps-storybook/src/components/snaps/image/index.ts b/packages/snaps-storybook/src/components/snaps/image/index.ts new file mode 100644 index 0000000000..e90be76c22 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/image/index.ts @@ -0,0 +1 @@ +export { Image as Component } from './Image'; diff --git a/packages/snaps-storybook/src/components/snaps/index.ts b/packages/snaps-storybook/src/components/snaps/index.ts new file mode 100644 index 0000000000..38e9cc4d04 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/index.ts @@ -0,0 +1,63 @@ +// Components that are exported here can be used by Snaps to render JSX +// elements. There are some custom components that are not part the Snaps JSX +// components, but are used by the Storybook plugin to render the extension +// window and provide the necessary context for the Snap to render. + +import type { JSXElement } from '@metamask/snaps-sdk/jsx'; + +import * as Address from './address'; +import * as Bold from './bold'; +import * as Box from './box'; +import * as Button from './button'; +import * as Card from './card'; +import * as Checkbox from './checkbox'; +import * as Container from './container'; +import * as Copyable from './copyable'; +import * as Divider from './divider'; +import * as Dropdown from './dropdown'; +import * as Field from './field'; +import * as FileInput from './file-input'; +import * as Footer from './footer'; +import * as Form from './form'; +import * as Heading from './heading'; +import * as Image from './image'; +import * as Input from './input'; +import * as Italic from './italic'; +import * as Link from './link'; +import * as Option from './option'; +import * as Row from './row'; +import * as Spinner from './spinner'; +import * as Text from './text'; +import * as Tooltip from './tooltip'; +import type { Component } from './types'; +import * as Value from './value'; + +export const SNAPS_COMPONENTS: Record = { + Address, + Bold, + Box, + Button, + Card, + Checkbox, + Container, + Copyable, + Divider, + Dropdown, + Field, + FileInput, + Footer, + Form, + Heading, + Image, + Input, + Italic, + Link, + Option, + Row, + Spinner, + Text, + Tooltip, + Value, +}; + +export * from './types'; diff --git a/packages/snaps-storybook/src/components/snaps/input/Input.styles.ts b/packages/snaps-storybook/src/components/snaps/input/Input.styles.ts new file mode 100644 index 0000000000..4aa97c6b3a --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/input/Input.styles.ts @@ -0,0 +1,44 @@ +import { inputAnatomy } from '@chakra-ui/anatomy'; +import { createMultiStyleConfigHelpers } from '@chakra-ui/react'; + +const { definePartsStyle, defineMultiStyleConfig } = + createMultiStyleConfigHelpers(inputAnatomy.keys); + +export const styles = defineMultiStyleConfig({ + baseStyle: definePartsStyle({ + field: { + color: 'text.default', + fontSize: 'sm', + paddingX: '4', + paddingY: '2', + }, + }), + + variants: { + outline: definePartsStyle({ + field: { + background: 'background.default', + borderWidth: '1px', + borderStyle: 'solid', + borderColor: 'border.default', + borderRadius: 'base', + _focus: { + outline: '5px auto', + outlineColor: 'primary.default', + outlineOffset: '0', + }, + _placeholder: { + color: 'text.alternative', + }, + _invalid: { + borderColor: 'error.default', + boxShadow: 'none', + }, + }, + }), + }, + + defaultProps: { + variant: 'outline', + }, +}); diff --git a/packages/snaps-storybook/src/components/snaps/input/Input.tsx b/packages/snaps-storybook/src/components/snaps/input/Input.tsx new file mode 100644 index 0000000000..c756d39165 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/input/Input.tsx @@ -0,0 +1,32 @@ +import { Input as ChakraInput } from '@chakra-ui/react'; +import type { InputProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import type { RenderProps } from '../../Renderer'; + +/** + * The input component renders an input field. See the {@link InputProps} type + * for the props. + * + * @param props - The props of the component. + * @param props.name - The name of the input field. + * @param props.type - The type of the input field. + * @param props.value - The default value of the input field. + * @param props.placeholder - The placeholder text of the input field. + * @returns The input element. + */ +export const Input: FunctionComponent> = ({ + name, + type, + value, + placeholder, +}) => { + return ( + + ); +}; diff --git a/packages/snaps-storybook/src/components/snaps/input/index.ts b/packages/snaps-storybook/src/components/snaps/input/index.ts new file mode 100644 index 0000000000..7d09aa5c21 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/input/index.ts @@ -0,0 +1,2 @@ +export { Input as Component } from './Input'; +export { styles } from './Input.styles'; diff --git a/packages/snaps-storybook/src/components/snaps/italic/Italic.tsx b/packages/snaps-storybook/src/components/snaps/italic/Italic.tsx new file mode 100644 index 0000000000..2134b3edb9 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/italic/Italic.tsx @@ -0,0 +1,13 @@ +import type { ItalicProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import type { RenderProps } from '../../Renderer'; + +export const Italic: FunctionComponent> = ({ + children, + Renderer, +}) => ( + + + +); diff --git a/packages/snaps-storybook/src/components/snaps/italic/index.ts b/packages/snaps-storybook/src/components/snaps/italic/index.ts new file mode 100644 index 0000000000..e8c24b5526 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/italic/index.ts @@ -0,0 +1 @@ +export { Italic as Component } from './Italic'; diff --git a/packages/snaps-storybook/src/components/snaps/link/Link.styles.ts b/packages/snaps-storybook/src/components/snaps/link/Link.styles.ts new file mode 100644 index 0000000000..ff16add004 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/link/Link.styles.ts @@ -0,0 +1,10 @@ +import { defineStyle, defineStyleConfig } from '@chakra-ui/react'; + +export const styles = defineStyleConfig({ + baseStyle: defineStyle({ + color: 'primary.default', + display: 'inline-flex', + alignItems: 'center', + gap: '1', + }), +}); diff --git a/packages/snaps-storybook/src/components/snaps/link/Link.tsx b/packages/snaps-storybook/src/components/snaps/link/Link.tsx new file mode 100644 index 0000000000..3ae338f9c8 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/link/Link.tsx @@ -0,0 +1,17 @@ +import { Link as ChakraLink } from '@chakra-ui/react'; +import type { LinkProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import { ExportIcon } from '../../icons'; +import type { RenderProps } from '../../Renderer'; + +export const Link: FunctionComponent> = ({ + href, + children, + Renderer, +}) => ( + + + + +); diff --git a/packages/snaps-storybook/src/components/snaps/link/index.ts b/packages/snaps-storybook/src/components/snaps/link/index.ts new file mode 100644 index 0000000000..e13346d6d5 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/link/index.ts @@ -0,0 +1,2 @@ +export { Link as Component } from './Link'; +export { styles } from './Link.styles'; diff --git a/packages/snaps-storybook/src/components/snaps/option/Option.tsx b/packages/snaps-storybook/src/components/snaps/option/Option.tsx new file mode 100644 index 0000000000..2dcec7ab29 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/option/Option.tsx @@ -0,0 +1,19 @@ +import type { OptionProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import type { RenderProps } from '../../Renderer'; + +/** + * A dropdown option element. + * + * @param props - The props of the component. + * @param props.value - The value of the dropdown option. This is used to + * populate the state in the form data. + * @param props.children - The text to display. + * @returns A dropdown option element. + * @see OptionProps + */ +export const Option: FunctionComponent> = ({ + value, + children, +}) => ; diff --git a/packages/snaps-storybook/src/components/snaps/option/index.ts b/packages/snaps-storybook/src/components/snaps/option/index.ts new file mode 100644 index 0000000000..c334cff8e6 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/option/index.ts @@ -0,0 +1 @@ +export { Option as Component } from './Option'; diff --git a/packages/snaps-storybook/src/components/snaps/row/Row.styles.ts b/packages/snaps-storybook/src/components/snaps/row/Row.styles.ts new file mode 100644 index 0000000000..a5a3d5f408 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/row/Row.styles.ts @@ -0,0 +1,29 @@ +import { defineStyle, defineStyleConfig } from '@chakra-ui/react'; + +export const styles = defineStyleConfig({ + baseStyle: defineStyle({ + display: 'flex', + gap: '1', + justifyContent: 'space-between', + borderRadius: 'lg', + paddingY: 'px', + }), + + variants: { + default: defineStyle({ + flexDirection: 'row', + }), + + warning: defineStyle({ + color: 'warning.default', + background: 'warning.muted', + paddingX: '2', + }), + + critical: defineStyle({ + color: 'error.default', + background: 'error.muted', + paddingX: '2', + }), + }, +}); diff --git a/packages/snaps-storybook/src/components/snaps/row/Row.tsx b/packages/snaps-storybook/src/components/snaps/row/Row.tsx new file mode 100644 index 0000000000..301a0134e6 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/row/Row.tsx @@ -0,0 +1,86 @@ +import { + Box, + Flex, + Text, + Tooltip as ChakraTooltip, + useStyleConfig, +} from '@chakra-ui/react'; +import type { RowProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import { DangerIcon, QuestionIcon, WarningIcon } from '../../icons'; +import type { RenderProps } from '../../Renderer'; + +/** + * Get the icon for the row variant. + * + * @param variant - The variant of the row. + * @returns The icon for the row variant. + */ +function getRowIcon(variant: RowProps['variant']) { + switch (variant) { + case 'warning': + return ; + case 'critical': + return ; + default: + return ; + } +} + +/** + * The props for the {@link Tooltip} component. + */ +type TooltipProps = Pick; + +/** + * The tooltip component, which is rendered in the row. + * + * @param props - The props of the component. + * @param props.tooltip - The tooltip content. + * @param props.variant - The variant of the tooltip. + * @returns The tooltip element. + */ +const Tooltip: FunctionComponent = ({ tooltip, variant }) => { + if (!tooltip) { + return null; + } + + return ( + + {getRowIcon(variant)} + + ); +}; + +/** + * The row component. See {@link RowProps} for the props. + * + * @param props - The props of the component. + * @param props.label - The label of the row. + * @param props.variant - The variant of the row. + * @param props.tooltip - The tooltip content. + * @param props.children - The children of the row. + * @param props.Renderer - The Renderer component to use to render nested + * elements. + * @returns A row element. + */ +export const Row: FunctionComponent> = ({ + label, + variant = 'default', + tooltip, + children, + Renderer, +}) => { + const styles = useStyleConfig('Row', { variant }); + + return ( + + + {label} + + + + + ); +}; diff --git a/packages/snaps-storybook/src/components/snaps/row/index.ts b/packages/snaps-storybook/src/components/snaps/row/index.ts new file mode 100644 index 0000000000..47c9fc75be --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/row/index.ts @@ -0,0 +1,2 @@ +export { Row as Component } from './Row'; +export { styles } from './Row.styles'; diff --git a/packages/snaps-storybook/src/components/snaps/spinner/Spinner.styles.ts b/packages/snaps-storybook/src/components/snaps/spinner/Spinner.styles.ts new file mode 100644 index 0000000000..1a8a3f0a1b --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/spinner/Spinner.styles.ts @@ -0,0 +1,7 @@ +import { defineStyle, defineStyleConfig } from '@chakra-ui/react'; + +export const styles = defineStyleConfig({ + baseStyle: defineStyle({ + color: 'primary.default', + }), +}); diff --git a/packages/snaps-storybook/src/components/snaps/spinner/Spinner.tsx b/packages/snaps-storybook/src/components/snaps/spinner/Spinner.tsx new file mode 100644 index 0000000000..e0b8eba1e3 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/spinner/Spinner.tsx @@ -0,0 +1,11 @@ +import { Spinner as ChakraSpinner } from '@chakra-ui/react'; +import type { FunctionComponent } from 'react'; + +/** + * A spinner component, which is used to indicate that a process is in progress. + * + * @returns The spinner element. + */ +export const Spinner: FunctionComponent = () => ( + +); diff --git a/packages/snaps-storybook/src/components/snaps/spinner/index.ts b/packages/snaps-storybook/src/components/snaps/spinner/index.ts new file mode 100644 index 0000000000..8a171152bb --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/spinner/index.ts @@ -0,0 +1,2 @@ +export { Spinner as Component } from './Spinner'; +export { styles } from './Spinner.styles'; diff --git a/packages/snaps-storybook/src/components/snaps/text/Text.styles.ts b/packages/snaps-storybook/src/components/snaps/text/Text.styles.ts new file mode 100644 index 0000000000..1988f65db2 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/text/Text.styles.ts @@ -0,0 +1,8 @@ +import { defineStyle, defineStyleConfig } from '@chakra-ui/react'; + +export const styles = defineStyleConfig({ + baseStyle: defineStyle({ + fontSize: 'inherit', + lineHeight: 'short', + }), +}); diff --git a/packages/snaps-storybook/src/components/snaps/text/Text.tsx b/packages/snaps-storybook/src/components/snaps/text/Text.tsx new file mode 100644 index 0000000000..7b33cf0df7 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/text/Text.tsx @@ -0,0 +1,25 @@ +import { Text as ChakraText } from '@chakra-ui/react'; +import type { TextProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import type { RenderProps } from '../../Renderer'; + +/** + * The text component. See {@link TextProps} for the props. + * + * @param props - The text props. + * @param props.children - The text content. + * @param props.Renderer - The Renderer component to use to render nested + * elements. + * @returns The rendered text. + */ +export const Text: FunctionComponent> = ({ + children, + Renderer, +}) => { + return ( + + + + ); +}; diff --git a/packages/snaps-storybook/src/components/snaps/text/index.ts b/packages/snaps-storybook/src/components/snaps/text/index.ts new file mode 100644 index 0000000000..9fd6642f0c --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/text/index.ts @@ -0,0 +1,2 @@ +export { Text as Component } from './Text'; +export { styles } from './Text.styles'; diff --git a/packages/snaps-storybook/src/components/snaps/tooltip/Tooltip.styles.ts b/packages/snaps-storybook/src/components/snaps/tooltip/Tooltip.styles.ts new file mode 100644 index 0000000000..e5a9c98025 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/tooltip/Tooltip.styles.ts @@ -0,0 +1,24 @@ +import { cssVar, defineStyle, defineStyleConfig } from '@chakra-ui/react'; + +const background = cssVar('popper-arrow-bg'); + +export const styles = defineStyleConfig({ + baseStyle: defineStyle({ + background: 'background.default', + color: 'text.default', + boxShadow: 'md', + [background.variable]: 'colors.background.default', + }), + + sizes: { + sm: defineStyle({ + fontSize: 'xs', + fontWeight: 'normal', + lineHeight: 'short', + }), + }, + + defaultProps: { + size: 'sm', + }, +}); diff --git a/packages/snaps-storybook/src/components/snaps/tooltip/Tooltip.tsx b/packages/snaps-storybook/src/components/snaps/tooltip/Tooltip.tsx new file mode 100644 index 0000000000..10d63c32c8 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/tooltip/Tooltip.tsx @@ -0,0 +1,33 @@ +import { Box, Tooltip as ChakraTooltip } from '@chakra-ui/react'; +import type { TooltipProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import type { RenderProps } from '../../Renderer'; + +/** + * The text component. See {@link TooltipProps} for the props. + * + * @param props - The tooltip props. + * @param props.content - The text to display in the tooltip. + * @param props.children - The children to render outside the tooltip, which + * will trigger the tooltip to display. + * @param props.Renderer - The Renderer component to use to render nested + * elements. + * @returns The rendered text. + */ +export const Tooltip: FunctionComponent> = ({ + content, + children, + Renderer, +}) => { + return ( + } + > + + + + + ); +}; diff --git a/packages/snaps-storybook/src/components/snaps/tooltip/index.ts b/packages/snaps-storybook/src/components/snaps/tooltip/index.ts new file mode 100644 index 0000000000..288cdc62ff --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/tooltip/index.ts @@ -0,0 +1,2 @@ +export { Tooltip as Component } from './Tooltip'; +export { styles } from './Tooltip.styles'; diff --git a/packages/snaps-storybook/src/components/snaps/types.ts b/packages/snaps-storybook/src/components/snaps/types.ts new file mode 100644 index 0000000000..65114c9a00 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/types.ts @@ -0,0 +1,19 @@ +import type { ComponentType } from 'react'; + +import type { MultiStyles, Styles } from '../../theme/utils'; + +/** + * A component that can be rendered in Storybook. + */ +export type Component = { + /** + * The React component to render. + */ + // eslint-disable-next-line @typescript-eslint/naming-convention + Component: ComponentType; + + /** + * The optional Chakra UI styles for the component. + */ + styles?: Styles | MultiStyles | Record; +}; diff --git a/packages/snaps-storybook/src/components/snaps/utils.ts b/packages/snaps-storybook/src/components/snaps/utils.ts new file mode 100644 index 0000000000..7bd34a3693 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/utils.ts @@ -0,0 +1,11 @@ +import { bytesToBase64, stringToBytes } from '@metamask/utils'; + +/** + * Get the image data URL for an SVG string. + * + * @param svg - The SVG string to convert to a data URL. + * @returns The data URL for the SVG image. + */ +export function getImage(svg: string) { + return `data:image/svg+xml;base64,${bytesToBase64(stringToBytes(svg))}`; +} diff --git a/packages/snaps-storybook/src/components/snaps/value/Value.tsx b/packages/snaps-storybook/src/components/snaps/value/Value.tsx new file mode 100644 index 0000000000..4beee8749f --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/value/Value.tsx @@ -0,0 +1,25 @@ +import { Flex, Text } from '@chakra-ui/react'; +import type { ValueProps } from '@metamask/snaps-sdk/jsx'; +import type { FunctionComponent } from 'react'; + +import type { RenderProps } from '../../Renderer'; + +/** + * The value component renders a value with an extra description. + * + * @param props - The component props. + * @param props.value - The value to render. + * @param props.extra - The extra description to render. + * @returns The value element. + */ +export const Value: FunctionComponent> = ({ + value, + extra, +}) => { + return ( + + {extra} + {value} + + ); +}; diff --git a/packages/snaps-storybook/src/components/snaps/value/index.ts b/packages/snaps-storybook/src/components/snaps/value/index.ts new file mode 100644 index 0000000000..28f851b355 --- /dev/null +++ b/packages/snaps-storybook/src/components/snaps/value/index.ts @@ -0,0 +1 @@ +export { Value as Component } from './Value'; diff --git a/packages/snaps-storybook/src/constants.ts b/packages/snaps-storybook/src/constants.ts new file mode 100644 index 0000000000..43732a5d6d --- /dev/null +++ b/packages/snaps-storybook/src/constants.ts @@ -0,0 +1 @@ +export const ADDON_ID = 'metamask/snaps-storybook'; diff --git a/packages/snaps-storybook/src/decorators.tsx b/packages/snaps-storybook/src/decorators.tsx new file mode 100644 index 0000000000..632f56b04e --- /dev/null +++ b/packages/snaps-storybook/src/decorators.tsx @@ -0,0 +1,52 @@ +import type { GenericSnapElement } from '@metamask/snaps-sdk/jsx'; + +import type { Decorator } from './types'; + +/** + * Wrap the story in a `ThemeProvider` with the theme from the global context. + * + * @param storyFn - The story function. + * @param context - The context. + * @returns The decorated story. + */ +const withThemeProvider: Decorator = (storyFn, context) => { + const element = storyFn() as GenericSnapElement; + const { theme } = context.globals; + + return { + type: 'ThemeProvider', + props: { + children: element, + theme, + }, + key: null, + }; +}; + +/** + * Wrap the story in the extension frame if the `extension` global is set. + * + * @param storyFn - The story function. + * @param context - The context. + * @returns The decorated story. + */ +const withExtension: Decorator = (storyFn, context) => { + const element = storyFn() as GenericSnapElement; + + if (context.globals.extension && element.type !== 'Extension') { + return { + type: 'Extension', + props: { + children: element, + }, + key: null, + }; + } + + return element; +}; + +// Note: The order here is important. The first decorator in the array is the +// innermost decorator. The last decorator in the array is the outermost +// decorator. +export const decorators: Decorator[] = [withExtension, withThemeProvider]; diff --git a/packages/snaps-storybook/src/docs.test.ts b/packages/snaps-storybook/src/docs.test.ts new file mode 100644 index 0000000000..80208f5fc1 --- /dev/null +++ b/packages/snaps-storybook/src/docs.test.ts @@ -0,0 +1,22 @@ +import { getSourceCode } from './docs'; + +describe('getSourceCode', () => { + it('returns the JSX source code from a Storybook story', async () => { + const code = ` + { + render: props => , + args: { + bar: 'baz', + children: , + } + } + `; + + expect(getSourceCode(code)).toMatchInlineSnapshot(` + " + + + " + `); + }); +}); diff --git a/packages/snaps-storybook/src/docs.ts b/packages/snaps-storybook/src/docs.ts new file mode 100644 index 0000000000..6d60b475c4 --- /dev/null +++ b/packages/snaps-storybook/src/docs.ts @@ -0,0 +1,256 @@ +import generate from '@babel/generator'; +import { parse } from '@babel/parser'; +import type { NodePath } from '@babel/traverse'; +import traverse from '@babel/traverse'; +import type { + Expression, + JSXAttribute, + JSXElement, + Node, + ObjectProperty, +} from '@babel/types'; +import { + isJSXElement, + jsxClosingElement, + isJSXOpeningElement, + isArrayExpression, + jsxText, + isExpression, + isStringLiteral, + jsxExpressionContainer, + isObjectProperty, + isIdentifier, + isObjectExpression, + isArrowFunctionExpression, + isFunctionExpression, + jsxAttribute, + jsxIdentifier, +} from '@babel/types'; +import parser from 'prettier/parser-babel'; +import { format } from 'prettier/standalone'; + +/** + * Find a node in the AST. + * + * @param ast - The AST to search. + * @param condition - The condition to match. + * @returns The node if found. + * @template Type - The type of node to find. This can be inferred from the + * condition. + * @example + * const property = find(ast, (path): path is NodePath => { + * return ( + * isObjectProperty(path.node) && + * isIdentifier(path.node.key, { name: 'render' }) + * ); + * }); + */ +function find( + ast: Node, + condition: (path: NodePath) => path is NodePath, +) { + let result: Type | undefined; + + traverse(ast, { + enter(path) { + if (condition(path)) { + path.stop(); + result = path.node; + + return null; + } + + return null; + }, + }); + + return result; +} + +/** + * Get the render function from an object expression. + * + * @param ast - The AST to search. + * @returns The render function. + */ +function getRenderFunction(ast: Node) { + const property = find(ast, (path): path is NodePath => { + return ( + isObjectProperty(path.node) && + isIdentifier(path.node.key, { name: 'render' }) + ); + }); + + if ( + property && + (isFunctionExpression(property.value) || + isArrowFunctionExpression(property.value)) + ) { + return property.value; + } + + return null; +} + +type Args = Record; + +/** + * Get the args object from an object expression. + * + * @param ast - The AST to search. + * @returns The args object. + */ +function getArgsObject(ast: Node): Args | null { + const args = find(ast, (path): path is NodePath => { + return ( + isObjectProperty(path.node) && + isIdentifier(path.node.key, { name: 'args' }) + ); + }); + + if (args && isObjectExpression(args.value)) { + return args.value.properties + .filter((property): property is ObjectProperty => + isObjectProperty(property), + ) + .reduce((accumulator, property) => { + if (!isIdentifier(property.key) || !isExpression(property.value)) { + return accumulator; + } + + return { + ...accumulator, + [property.key.name]: property.value, + }; + }, {}); + } + + return null; +} + +/** + * Get a JSX attribute (i.e., `key={value}`) from a name and expression. String + * literals are returned as is, while other expressions are wrapped in an + * expression container (`{}`). + * + * @param name - The name of the attribute. + * @param expression - The expression to use as the value. + * @returns The JSX attribute. + */ +function getJsxAttribute( + name: PropertyKey, + expression: Expression, +): JSXAttribute | null { + const identifier = jsxIdentifier(name.toString()); + if (isStringLiteral(expression)) { + return jsxAttribute(identifier, expression); + } + + return jsxAttribute(identifier, jsxExpressionContainer(expression)); +} + +/** + * Get all children from an expression. + * + * @param children - The children expression. + * @returns The children as JSX elements. + */ +function getChildren(children: Expression): JSXElement['children'] { + if (isArrayExpression(children)) { + return children.elements + .filter((element): element is Expression => isExpression(element)) + .flatMap(getChildren); + } + + if (isStringLiteral(children)) { + return [jsxText(children.value)]; + } + + if (isJSXElement(children)) { + return [children]; + } + + return [jsxExpressionContainer(children)]; +} + +/** + * Get the source code for a Storybook story. This assumes the story is an + * object with a render function and args object. Story functions are not + * supported at this time. + * + * @param code - The code to transform. + * @returns The transformed code. + * @example + * const code = ` + * { + * render: props => , + * args: { + * bar: 'baz', + * children: , + * }, + * } + * `; + * + * getSourceCode(code); // "" + */ +export function getSourceCode(code: string) { + const ast = parse(`(${code})`, { + plugins: ['jsx'], + }); + + const render = getRenderFunction(ast); + const name = isIdentifier(render?.params[0]) + ? render?.params[0].name + : 'props'; + + const args = getArgsObject(ast); + + // If the render function or args object are not found, return the original + // code. + if (!render || !args) { + return code; + } + + let currentElement: JSXElement | null = null; + + // Create the JSX element from the render function and args object. + traverse(ast, { + JSXElement(path) { + currentElement = path.node; + }, + + JSXSpreadAttribute(path) { + if ( + isIdentifier(path.node.argument) && + path.node.argument.name === name + ) { + path.replaceWithMultiple( + Object.entries(args) + .filter(([key]) => key !== 'children') + .map(([key, value]) => getJsxAttribute(key, value)) + .filter((value): value is JSXAttribute => value !== null), + ); + } + + if (args.children && currentElement) { + if (isJSXOpeningElement(path.parent)) { + path.parent.selfClosing = false; + currentElement.closingElement = jsxClosingElement(path.parent.name); + } + + currentElement.children = getChildren(args.children); + } + }, + }); + + // If we don't add a leading semicolon, Prettier will add one itself. Instead, + // we add a leading semicolon and remove it after formatting. + const output = `;${generate(render.body).code}`; + return format(output, { + parser: 'babel', + plugins: [parser], + singleQuote: true, + jsxSingleQuote: false, + semi: false, + }).slice(1); +} diff --git a/packages/snaps-storybook/src/globals.ts b/packages/snaps-storybook/src/globals.ts new file mode 100644 index 0000000000..f365cb6a84 --- /dev/null +++ b/packages/snaps-storybook/src/globals.ts @@ -0,0 +1,74 @@ +import type { GlobalTypes, Parameters, StoryContext } from '@storybook/types'; + +import { getSourceCode } from './docs'; +import { theme } from './theme/storybook'; +import type { SnapsRenderer } from './types'; + +/** + * Global types for the Storybook stories. This is mainly used to configure the + * toolbar. + * + * These types are automatically added to the toolbar by + * `@storybook/addon-toolbars`, which is loaded by this preset. + */ +export const globalTypes: GlobalTypes = { + extension: { + name: 'Extension', + description: 'Toggle the MetaMask extension window', + defaultValue: false, + toolbar: { + icon: 'browser', + items: [ + { + value: true, + title: 'Enable MetaMask', + }, + { + value: false, + title: 'Disable MetaMask', + }, + ], + dynamicTitle: true, + }, + }, + theme: { + name: 'Theme', + description: 'The theme of the UI', + defaultValue: 'light', + toolbar: { + icon: 'mirror', + items: [ + { + value: 'light', + right: '🌞', + title: 'Light theme', + }, + { + value: 'dark', + right: '🌚', + title: 'Dark theme', + }, + ], + dynamicTitle: true, + }, + }, +}; + +/** + * The parameters for the Storybook stories. This is mainly used to configure + * the documentation generation. + */ +export const parameters: Parameters = { + docs: { + story: { inline: true }, + source: { + transform: ( + code: string, + _context: StoryContext>, + ) => { + return getSourceCode(code); + }, + }, + theme, + }, +}; diff --git a/packages/snaps-storybook/src/index.ts b/packages/snaps-storybook/src/index.ts new file mode 100644 index 0000000000..fcb073fefc --- /dev/null +++ b/packages/snaps-storybook/src/index.ts @@ -0,0 +1 @@ +export * from './types'; diff --git a/packages/snaps-storybook/src/manager.ts b/packages/snaps-storybook/src/manager.ts new file mode 100644 index 0000000000..fe077b89b0 --- /dev/null +++ b/packages/snaps-storybook/src/manager.ts @@ -0,0 +1,8 @@ +import { addons } from '@storybook/manager-api'; + +import { theme } from './theme/storybook'; + +// Modify the Storybook theme to match MetaMask's theme. +addons.setConfig({ + theme, +}); diff --git a/packages/snaps-storybook/src/preset.ts b/packages/snaps-storybook/src/preset.ts new file mode 100644 index 0000000000..5d12ff13c2 --- /dev/null +++ b/packages/snaps-storybook/src/preset.ts @@ -0,0 +1,163 @@ +import type { ViteFinal } from '@storybook/builder-vite'; +import type { PresetProperty } from '@storybook/types'; +import { resolve, dirname, join } from 'path'; +import type { PluginOption } from 'vite'; +import { nodePolyfills } from 'vite-plugin-node-polyfills'; + +/** + * Get the absolute path of a file in an Node.js package. + * + * @param input - The package name. + * @param paths - The paths to join to the package directory. + * @returns The absolute path. + */ +const getAbsolutePath = (input: string, ...paths: string[]): string => + resolve(dirname(require.resolve(join(input, 'package.json'))), ...paths); + +/** + * The core preset for the Snaps Storybook package. This preset configures the + * Storybook builder and renderer to use the Webpack builder and Snaps renderer. + */ +export const core: PresetProperty<'core'> = { + builder: getAbsolutePath('@storybook/builder-vite'), + renderer: getAbsolutePath('@metamask/snaps-storybook'), +}; + +/** + * This function is called by Storybook to configure the static directories. It + * is used to add the `@metamask/snaps-storybook` package's assets to the static + * directories, so that they are copied to the output directory during the + * build. + * + * @param input - The original static directories. + * @returns The modified static directories. + */ +export const staticDirs: PresetProperty<'staticDirs'> = (input = []) => { + return [ + ...input, + { + from: getAbsolutePath('@metamask/snaps-storybook', 'src/assets'), + to: 'snaps', + }, + ]; +}; + +/** + * This function is called by Storybook to configure the preview. It is used to + * add the `preview.js` file to the preview configuration, which sets up the + * renderer for the Snaps components. + * + * @param input - The original preview configuration. + * @returns The modified preview configuration. + */ +export const previewAnnotations: PresetProperty<'previewAnnotations'> = ( + input = [], +) => { + return [ + ...input, + require.resolve('./preview.mjs'), + require.resolve('./globals.mjs'), + require.resolve('./decorators.mjs'), + ]; +}; + +/** + * This function is called by Storybook to configure the manager entries. It is + * used to add the `manager.js` file to the manager configuration, which sets up + * the Snaps addon. + * + * @param input - The original manager entries. + * @returns The modified manager entries. + */ +export const managerEntries = (input: string[] = []) => { + return [...input, require.resolve('./manager.mjs')]; +}; + +/** + * Extra addons to include in the Storybook configuration. + */ +export const addons: PresetProperty<'addons'> = [ + getAbsolutePath('@storybook/addon-docs'), + getAbsolutePath('@storybook/addon-toolbars'), +]; + +const CUSTOM_HEAD = ` + + + + + + + + + + + + + + + + + + + +`; + +/** + * This function is called by Storybook to configure the manager head. It is + * used to inject the custom fonts into the manager head. + * + * @param head - The original manager head. + * @returns The modified manager head. + */ +export const managerHead: PresetProperty<'managerHead'> = (head = '') => ` + ${head} + ${CUSTOM_HEAD} +`; + +/** + * This function is called by Storybook to configure the preview head. It is + * used to inject the custom fonts into the preview head. + * + * @param head - The original preview head. + * @returns The modified preview head. + */ +export const previewHead: PresetProperty<'previewHead'> = (head = '') => ` + ${head} + ${CUSTOM_HEAD} +`; + +/** + * Modify the Vite configuration to include the Node.js globals and modules + * polyfills. + * + * @param config - The Vite configuration. + * @returns The modified Vite configuration. + */ +export const viteFinal: ViteFinal = (config) => { + return { + ...config, + build: { + ...config.build, + rollupOptions: { + ...config.build?.rollupOptions, + onwarn: (warning, warn) => { + if (warning.code === 'MODULE_LEVEL_DIRECTIVE') { + return; + } + + warn(warning); + }, + }, + }, + plugins: [ + ...(config.plugins as PluginOption[]), + nodePolyfills({ + globals: { + Buffer: true, + process: true, + }, + }), + ], + }; +}; diff --git a/packages/snaps-storybook/src/preview.ts b/packages/snaps-storybook/src/preview.ts new file mode 100644 index 0000000000..6d774e90ad --- /dev/null +++ b/packages/snaps-storybook/src/preview.ts @@ -0,0 +1 @@ +export { render, renderToCanvas } from './render'; diff --git a/packages/snaps-storybook/src/render.tsx b/packages/snaps-storybook/src/render.tsx new file mode 100644 index 0000000000..b4fbab553a --- /dev/null +++ b/packages/snaps-storybook/src/render.tsx @@ -0,0 +1,71 @@ +import type { JSXElement } from '@metamask/snaps-sdk/jsx'; +import { renderElement, unmountElement } from '@storybook/react-dom-shim'; +import type { ArgsStoryFn, RenderToCanvas } from '@storybook/types'; +import { StrictMode } from 'react'; + +import { ErrorBoundary, Renderer } from './components'; +import { CUSTOM_COMPONENTS } from './components/custom'; +import type { SnapsRenderer } from './types'; + +/** + * Render a story. + * + * @param args - The story arguments. + * @param context - The story context. + * @returns The rendered story. + */ +export const render: ArgsStoryFn = (args, context) => { + const { id, component: Component } = context; + if (!Component) { + throw new Error( + `Unable to render story ${id} as the component annotation is missing from the default export`, + ); + } + + return ; +}; + +/** + * Render a story to a "canvas" (i.e., a DOM element, not a literal canvas). + * This renders `@metamask/snaps-sdk` JSX elements to the DOM, by creating a + * React root and rendering a template renderer which renders the JSX elements + * to the DOM. + * + * @param context - The context of the story. + * @param context.storyFn - The story function. + * @param context.showMain - A function that displays the main view. + * @param context.showException - A function that displays an exception. + * @param context.forceRemount - Whether to force remount the component. + * @param canvas - The DOM element to render the story to. + * @returns A cleanup function. + */ +export const renderToCanvas: RenderToCanvas = async ( + { storyFn, showMain, showException, forceRemount }, + canvas, +) => { + const storyElement = storyFn() as JSXElement; + + const element = ( + + + + + + ); + + if (forceRemount) { + unmountElement(canvas); + } + + // We render the element using `@storybook/react-dom-shim`, since it handles + // multiple renderers and contexts. + await renderElement(element, canvas); + + return () => { + unmountElement(canvas); + }; +}; diff --git a/packages/snaps-storybook/src/theme/borders.ts b/packages/snaps-storybook/src/theme/borders.ts new file mode 100644 index 0000000000..4fbfd703c2 --- /dev/null +++ b/packages/snaps-storybook/src/theme/borders.ts @@ -0,0 +1,10 @@ +/* eslint-disable @typescript-eslint/naming-convention */ + +import { getDesignTokens } from './utils'; + +export const borders = { + muted: { + default: `1px solid ${getDesignTokens('colors').border.muted.default}`, + _dark: `1px solid ${getDesignTokens('colors').border.muted._dark}`, + }, +}; diff --git a/packages/snaps-storybook/src/theme/config.ts b/packages/snaps-storybook/src/theme/config.ts new file mode 100644 index 0000000000..7dc3d3c3aa --- /dev/null +++ b/packages/snaps-storybook/src/theme/config.ts @@ -0,0 +1,6 @@ +import type { ThemeConfig } from '@chakra-ui/react'; + +export const config: ThemeConfig = { + initialColorMode: 'light', + useSystemColorMode: false, +}; diff --git a/packages/snaps-storybook/src/theme/index.ts b/packages/snaps-storybook/src/theme/index.ts new file mode 100644 index 0000000000..089425913c --- /dev/null +++ b/packages/snaps-storybook/src/theme/index.ts @@ -0,0 +1,29 @@ +import { extendTheme } from '@chakra-ui/react'; + +import { SNAPS_COMPONENTS } from '../components'; +import { borders } from './borders'; +import { config } from './config'; +import { lineHeights } from './line-heights'; +import { shadows } from './shadows'; +import { styles } from './styles'; +import { getComponents, getDesignTokens } from './utils'; + +export const theme = extendTheme({ + config, + components: getComponents(SNAPS_COMPONENTS), + + fonts: { + heading: `"Euclid Circular B", sans-serif`, + body: `"Euclid Circular B", sans-serif`, + }, + + lineHeights, + + semanticTokens: { + borders, + colors: getDesignTokens('colors'), + shadows, + }, + + styles, +}); diff --git a/packages/snaps-storybook/src/theme/line-heights.ts b/packages/snaps-storybook/src/theme/line-heights.ts new file mode 100644 index 0000000000..bdb83e4879 --- /dev/null +++ b/packages/snaps-storybook/src/theme/line-heights.ts @@ -0,0 +1,3 @@ +export const lineHeights = { + short: '1.375rem', +}; diff --git a/packages/snaps-storybook/src/theme/shadows.ts b/packages/snaps-storybook/src/theme/shadows.ts new file mode 100644 index 0000000000..2f447fb23d --- /dev/null +++ b/packages/snaps-storybook/src/theme/shadows.ts @@ -0,0 +1,3 @@ +import { getShadows } from './utils'; + +export const shadows = getShadows(); diff --git a/packages/snaps-storybook/src/theme/storybook.ts b/packages/snaps-storybook/src/theme/storybook.ts new file mode 100644 index 0000000000..677fafb7fb --- /dev/null +++ b/packages/snaps-storybook/src/theme/storybook.ts @@ -0,0 +1,59 @@ +import { colors as tokens } from '@metamask/design-tokens'; +import { create } from '@storybook/theming'; + +const colors = tokens.light; + +/** + * The theme for the Storybook UI itself. + */ +export const theme = create( + { + brandTitle: 'MetaMask Snaps Storybook', + brandUrl: 'https://metamask.io', + brandImage: './snaps/logo.svg', + brandTarget: '_self', + + base: 'light', + + // Storybook-specific color palette + colorPrimary: colors.primary.default, + colorSecondary: colors.primary.alternative, + + // UI + appBg: colors.background.alternative, + appContentBg: colors.background.default, + appPreviewBg: colors.background.default, + appBorderColor: colors.border.muted, + appBorderRadius: 4, + + // Fonts + fontBase: '"Inter", sans-serif', + fontCode: '"IBM Plex Mono", monospace', + + // Text colors + textColor: colors.text.default, + textInverseColor: colors.background.default, + textMutedColor: colors.text.muted, + + // Toolbar default and active colors + barTextColor: colors.text.alternative, + barHoverColor: colors.info.default, + barSelectedColor: colors.info.default, + barBg: colors.background.default, + + // Form colors + buttonBg: colors.primary.muted, + buttonBorder: colors.primary.muted, + booleanBg: colors.background.alternativePressed, + booleanSelectedBg: colors.background.alternativePressed, + inputBg: colors.background.default, + inputBorder: colors.border.muted, + inputTextColor: colors.text.default, + inputBorderRadius: 4, + }, + { + background: { + content: '#fff', + }, + }, +); diff --git a/packages/snaps-storybook/src/theme/styles.ts b/packages/snaps-storybook/src/theme/styles.ts new file mode 100644 index 0000000000..21ca2934d1 --- /dev/null +++ b/packages/snaps-storybook/src/theme/styles.ts @@ -0,0 +1,17 @@ +import type { Styles } from '@chakra-ui/theme-tools'; + +export const styles: Styles = { + global: { + body: { + background: 'background.default', + color: 'text.default', + fontSize: 'sm', + }, + + // The Storybook docs container. + '.docs-story': { + background: 'background.default', + color: 'text.default', + }, + }, +}; diff --git a/packages/snaps-storybook/src/theme/utils.test.ts b/packages/snaps-storybook/src/theme/utils.test.ts new file mode 100644 index 0000000000..1c237849d6 --- /dev/null +++ b/packages/snaps-storybook/src/theme/utils.test.ts @@ -0,0 +1,230 @@ +import { getDesignTokens } from './utils'; + +describe('getDesignTokens', () => { + it('returns design tokens', () => { + expect(getDesignTokens('colors')).toMatchInlineSnapshot(` + { + "background": { + "alternative": { + "_dark": "#141618", + "default": "#f2f4f6", + }, + "alternativeHover": { + "_dark": "#1f2123", + "default": "#e7ebee", + }, + "alternativePressed": { + "_dark": "#2e3033", + "default": "#dbe0e6", + }, + "default": { + "_dark": "#24272a", + "default": "#ffffff", + }, + "defaultHover": { + "_dark": "#313235", + "default": "#f5f5f5", + }, + "defaultPressed": { + "_dark": "#3f4145", + "default": "#ebebeb", + }, + "hover": { + "_dark": "#ffffff0a", + "default": "#0000000a", + }, + "pressed": { + "_dark": "#ffffff14", + "default": "#00000014", + }, + }, + "border": { + "default": { + "_dark": "#848c96", + "default": "#bbc0c5", + }, + "muted": { + "_dark": "#848c9629", + "default": "#bbc0c566", + }, + }, + "error": { + "alternative": { + "_dark": "#f1b9be", + "default": "#8e1d28", + }, + "default": { + "_dark": "#e88f97", + "default": "#d73847", + }, + "defaultHover": { + "_dark": "#e47782", + "default": "#d02a3a", + }, + "defaultPressed": { + "_dark": "#e78891", + "default": "#bf2635", + }, + "inverse": { + "_dark": "#141618", + "default": "#ffffff", + }, + "muted": { + "_dark": "#e88f9726", + "default": "#d738471a", + }, + }, + "flask": { + "default": { + "_dark": "#d27dff", + "default": "#8b45b6", + }, + "inverse": { + "_dark": "#141618", + "default": "#ffffff", + }, + }, + "icon": { + "alternative": { + "_dark": "#bbc0c5", + "default": "#6a737d", + }, + "default": { + "_dark": "#ffffff", + "default": "#141618", + }, + "muted": { + "_dark": "#848c96", + "default": "#9fa6ae", + }, + }, + "info": { + "default": { + "_dark": "#43aefc", + "default": "#0376c9", + }, + "inverse": { + "_dark": "#141618", + "default": "#ffffff", + }, + "muted": { + "_dark": "#43aefc26", + "default": "#0376c91a", + }, + }, + "overlay": { + "alternative": { + "_dark": "#000000cc", + "default": "#000000cc", + }, + "default": { + "_dark": "#00000099", + "default": "#00000099", + }, + "inverse": { + "_dark": "#ffffff", + "default": "#ffffff", + }, + }, + "primary": { + "alternative": { + "_dark": "#75c4fd", + "default": "#0260a4", + }, + "default": { + "_dark": "#43aefc", + "default": "#0376c9", + }, + "defaultHover": { + "_dark": "#26a2fc", + "default": "#036ab5", + }, + "defaultPressed": { + "_dark": "#3baafd", + "default": "#025ea1", + }, + "inverse": { + "_dark": "#141618", + "default": "#ffffff", + }, + "muted": { + "_dark": "#43aefc26", + "default": "#0376c91a", + }, + }, + "shadow": { + "default": { + "_dark": "#00000066", + "default": "#0000001a", + }, + "error": { + "_dark": "#ff758466", + "default": "#ca354266", + }, + "primary": { + "_dark": "#43aefc33", + "default": "#0376c933", + }, + }, + "success": { + "default": { + "_dark": "#28a745", + "default": "#1c8234", + }, + "defaultHover": { + "_dark": "#2cb94c", + "default": "#18712d", + }, + "defaultPressed": { + "_dark": "#30ca53", + "default": "#156127", + }, + "inverse": { + "_dark": "#141618", + "default": "#ffffff", + }, + "muted": { + "_dark": "#28a74526", + "default": "#1c82341a", + }, + }, + "text": { + "alternative": { + "_dark": "#bbc0c5", + "default": "#6a737d", + }, + "default": { + "_dark": "#ffffff", + "default": "#141618", + }, + "muted": { + "_dark": "#848c96", + "default": "#9fa6ae", + }, + }, + "warning": { + "default": { + "_dark": "#ffdf70", + "default": "#bf5208", + }, + "defaultHover": { + "_dark": "#ffe485", + "default": "#ac4a07", + }, + "defaultPressed": { + "_dark": "#ffe899", + "default": "#984106", + }, + "inverse": { + "_dark": "#141618", + "default": "#ffffff", + }, + "muted": { + "_dark": "#ffdf7026", + "default": "#bf52081a", + }, + }, + } + `); + }); +}); diff --git a/packages/snaps-storybook/src/theme/utils.ts b/packages/snaps-storybook/src/theme/utils.ts new file mode 100644 index 0000000000..34c32b27bf --- /dev/null +++ b/packages/snaps-storybook/src/theme/utils.ts @@ -0,0 +1,124 @@ +/* eslint-disable @typescript-eslint/naming-convention */ + +import type { + createMultiStyleConfigHelpers, + defineStyleConfig, +} from '@chakra-ui/react'; +import type { Theme } from '@metamask/design-tokens'; +import { darkTheme, lightTheme } from '@metamask/design-tokens'; +import { hasProperty } from '@metamask/utils'; + +import type { Component } from '../components'; + +export type DesignTokens = Record< + string, + Record +>; + +/** + * Create a Chakra-compatible design tokens object from the design tokens + * provided by the `@metamask/design-tokens` package. + * + * @param themeValue - The theme value to extract from the design tokens. + * @returns The design tokens for the specified theme value. + */ +export function getDesignTokens(themeValue: keyof Theme): DesignTokens { + return Object.fromEntries( + Object.entries(lightTheme[themeValue]).map(([themeKey, themeObject]) => [ + themeKey, + Object.fromEntries( + Object.entries(themeObject).map(([key, value]) => [ + key, + { + default: value as string, + _dark: + darkTheme[themeValue][themeKey as keyof Theme[typeof themeValue]][ + key + ], + }, + ]), + ), + ]), + ); +} + +/** + * The shadow shape type from `@metamask/design-tokens`. It's not exported from + * the package, so we need to define it here. + */ +type ShadowShape = Theme['shadows']['size']['xs']; + +/** + * Get a shadow string from a {@link ShadowShape} object. + * + * @param shape - The shadow shape to get the string for. + * @returns The shadow string. + */ +function getShadow(shape: ShadowShape) { + return `${shape.shadowOffset.width}px ${shape.shadowOffset.height}px ${shape.shadowRadius}px 0px ${shape.shadowColor}`; +} + +/** + * Get the shadows from the design tokens. + * + * @returns The shadows extracted from the design tokens. + */ +export function getShadows() { + return Object.fromEntries( + Object.entries(lightTheme.shadows.size).map(([key, value]) => [ + key, + { + default: getShadow(value), + _dark: getShadow( + darkTheme.shadows.size[key as keyof Theme['shadows']['size']], + ), + }, + ]), + ); +} + +export type MultiStyles = ReturnType< + ReturnType['defineMultiStyleConfig'] +>; + +export type Styles = ReturnType; + +/** + * Check if the styles provided are a record of styles. + * + * @param styles - The styles to check. + * @returns Whether the styles are a record of styles. + */ +export function isStylesRecord( + styles?: Styles | MultiStyles | Record, +): styles is Record { + return ( + styles !== undefined && + !hasProperty(styles, 'baseStyle') && + !hasProperty(styles, 'variants') + ); +} + +/** + * Extract the styles from the components provided. + * + * @param components - The components to extract styles from. + * @returns The styles extracted from the components. + */ +export function getComponents(components: Record) { + return Object.entries(components) + .filter(([, component]) => component.styles !== undefined) + .reduce((accumulator, [componentName, component]) => { + if (isStylesRecord(component.styles)) { + return { + ...accumulator, + ...component.styles, + }; + } + + return { + ...accumulator, + [componentName]: component.styles, + }; + }, {}); +} diff --git a/packages/snaps-storybook/src/types.ts b/packages/snaps-storybook/src/types.ts new file mode 100644 index 0000000000..9b75c19af5 --- /dev/null +++ b/packages/snaps-storybook/src/types.ts @@ -0,0 +1,55 @@ +import type { JsonObject, SnapComponent } from '@metamask/snaps-sdk/jsx'; +import type { + Args, + ComponentAnnotations, + DecoratorFunction, + ProjectAnnotations, + StoryAnnotations, + StrictArgs, + WebRenderer, + ArgsStoryFn, +} from '@storybook/types'; + +/** + * The renderer for the component stories. + * + * @template Props - The props type for the component that is being rendered. + */ +export type SnapsRenderer> = + WebRenderer & { + component: SnapComponent; + }; + +/** + * Decorator function for the component story. + */ +export type Decorator = DecoratorFunction< + SnapsRenderer, + DecoratorArgs +>; + +/** + * Meta data for the component story. + */ +export type Meta = [ComponentOrArgs] extends [ + SnapComponent, +] + ? ComponentAnnotations, Props> + : ComponentAnnotations, ComponentOrArgs>; + +/** + * Story object for the component story. + */ +export type Story = StoryAnnotations; + +/** + * Story function for the component story. Note that this is not supported by + * the documentation source code generation, so using {@link Story} is + * recommended. + */ +export type StoryFunction = ArgsStoryFn; + +/** + * Preview config for the project. + */ +export type Preview = ProjectAnnotations; diff --git a/packages/snaps-storybook/src/types/jazzicon.d.ts b/packages/snaps-storybook/src/types/jazzicon.d.ts new file mode 100644 index 0000000000..887bf8c850 --- /dev/null +++ b/packages/snaps-storybook/src/types/jazzicon.d.ts @@ -0,0 +1,7 @@ +// eslint-disable-next-line import/unambiguous +declare module '@metamask/jazzicon' { + export default function createIcon( + diameter: number, + seed: number, + ): HTMLElement; +} diff --git a/packages/snaps-storybook/tsconfig.build.json b/packages/snaps-storybook/tsconfig.build.json new file mode 100644 index 0000000000..b7032803d0 --- /dev/null +++ b/packages/snaps-storybook/tsconfig.build.json @@ -0,0 +1,24 @@ +{ + "extends": "../../tsconfig.packages.build.json", + "compilerOptions": { + "jsx": "react-jsx", + "baseUrl": "./", + "outDir": "./dist/types", + "rootDir": "./src", + "skipLibCheck": true, + "resolveJsonModule": true + }, + "include": ["./src"], + "exclude": [ + "**/*.test.ts", + "**/*.test.tsx", + "./src/**/test-utils", + "./src/**/__mocks__", + "./src/**/__snapshots__" + ], + "references": [ + { + "path": "../snaps-sdk/tsconfig.build.json" + } + ] +} diff --git a/packages/snaps-storybook/tsconfig.json b/packages/snaps-storybook/tsconfig.json new file mode 100644 index 0000000000..9927c977ab --- /dev/null +++ b/packages/snaps-storybook/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "../../tsconfig.packages.json", + "compilerOptions": { + "baseUrl": "./", + "jsx": "react-jsx", + "jsxImportSource": "react" + }, + "include": ["./src", "tsup.config.ts"], + "references": [ + { + "path": "../snaps-sdk" + } + ] +} diff --git a/packages/snaps-storybook/tsup.config.ts b/packages/snaps-storybook/tsup.config.ts new file mode 100644 index 0000000000..301ea6c988 --- /dev/null +++ b/packages/snaps-storybook/tsup.config.ts @@ -0,0 +1,15 @@ +import deepmerge from 'deepmerge'; +import type { Options } from 'tsup'; + +import packageJson from './package.json'; + +// `tsup.config.ts` is not under `rootDir`, so we need to use `require` instead. +// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires +const { default: baseConfig } = require('../../tsup.config'); + +const config: Options = { + name: packageJson.name, + external: ['@storybook/manager-api'], +}; + +export default deepmerge(baseConfig, config); diff --git a/packages/snaps-utils/src/post-process.test.ts b/packages/snaps-utils/src/post-process.test.ts index a84761b7fa..d89fe49cbb 100644 --- a/packages/snaps-utils/src/post-process.test.ts +++ b/packages/snaps-utils/src/post-process.test.ts @@ -413,6 +413,7 @@ describe('postProcessBundle', () => { "code": "const foo = 'bar';", "sourceMap": { "file": undefined, + "ignoreList": [], "mappings": "AACM,MAAMA,GAAG,GAAG,KAAK", "names": [ "foo", @@ -445,7 +446,7 @@ describe('postProcessBundle', () => { expect(processedCode).toMatchInlineSnapshot(` { "code": "const foo = 'bar'; - //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb28iXSwic291cmNlcyI6WyJ1bmtub3duIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgY29uc3QgZm9vID0gJ2Jhcic7XG4gICAgIl0sIm1hcHBpbmdzIjoiQUFDTSxNQUFNQSxHQUFHLEdBQUcsS0FBSyJ9", + //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb28iXSwic291cmNlcyI6WyJ1bmtub3duIl0sInNvdXJjZXNDb250ZW50IjpbIlxuICAgICAgY29uc3QgZm9vID0gJ2Jhcic7XG4gICAgIl0sIm1hcHBpbmdzIjoiQUFDTSxNQUFNQSxHQUFHLEdBQUcsS0FBSyIsImlnbm9yZUxpc3QiOltdfQ==", "sourceMap": null, "warnings": [], } @@ -486,6 +487,7 @@ describe('postProcessBundle', () => { exports.foo = 'bar';", "sourceMap": { "file": undefined, + "ignoreList": [], "mappings": ";;;;;AAAaA,OAAG,CAAGC,GAAA,GAAM", "names": [ "exports", diff --git a/tsconfig.build.json b/tsconfig.build.json index 99ddb4f587..ef784ab5ff 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -11,6 +11,7 @@ { "path": "./packages/snaps-rpc-methods/tsconfig.build.json" }, { "path": "./packages/snaps-sdk/tsconfig.build.json" }, { "path": "./packages/snaps-simulator/tsconfig.build.json" }, + { "path": "./packages/snaps-storybook/tsconfig.build.json" }, { "path": "./packages/snaps-utils/tsconfig.build.json" }, { "path": "./packages/snaps-webpack-plugin/tsconfig.build.json" } ] diff --git a/tsconfig.json b/tsconfig.json index 39d06b3601..c9e9abc4cf 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,6 +10,7 @@ { "path": "./packages/snaps-rpc-methods" }, { "path": "./packages/snaps-sdk" }, { "path": "./packages/snaps-simulator" }, + { "path": "./packages/snaps-storybook" }, { "path": "./packages/snaps-utils" }, { "path": "./packages/snaps-webpack-plugin" } ], diff --git a/yarn.lock b/yarn.lock index 2c52d7f368..4898223b7e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -22,7 +22,18 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:7.23.5, @babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.21.4, @babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.23.5": +"@aw-web-design/x-default-browser@npm:1.4.126": + version: 1.4.126 + resolution: "@aw-web-design/x-default-browser@npm:1.4.126" + dependencies: + default-browser-id: 3.0.0 + bin: + x-default-browser: bin/x-default-browser.js + checksum: f63b68a0ff41c8fe478b1b4822e169cac0d26c61b123c0400d5e16a8a5987732b85795aff16d6b21936f9c955f0d32bffbfc166890d3446f74a72a7a2c9633ea + languageName: node + linkType: hard + +"@babel/code-frame@npm:7.23.5": version: 7.23.5 resolution: "@babel/code-frame@npm:7.23.5" dependencies: @@ -32,10 +43,20 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9, @babel/compat-data@npm:^7.23.2": - version: 7.23.2 - resolution: "@babel/compat-data@npm:7.23.2" - checksum: d8dc27437d40907b271161d4c88ffe72ccecb034c730deb1960a417b59a14d7c5ebca8cd80dd458a01cd396a7a329eb48cddcc3791b5a84da33d7f278f7bec6a +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.21.4, @babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.23.5, @babel/code-frame@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/code-frame@npm:7.24.7" + dependencies: + "@babel/highlight": ^7.24.7 + picocolors: ^1.0.0 + checksum: 830e62cd38775fdf84d612544251ce773d544a8e63df667728cc9e0126eeef14c6ebda79be0f0bc307e8318316b7f58c27ce86702e0a1f5c321d842eb38ffda4 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/compat-data@npm:7.24.7" + checksum: 1fc276825dd434fe044877367dfac84171328e75a8483a6976aa28bf833b32367e90ee6df25bdd97c287d1aa8019757adcccac9153de70b1932c0d243a978ae9 languageName: node linkType: hard @@ -85,78 +106,79 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.23.0, @babel/generator@npm:^7.23.6, @babel/generator@npm:^7.7.2": - version: 7.23.6 - resolution: "@babel/generator@npm:7.23.6" +"@babel/generator@npm:^7.23.0, @babel/generator@npm:^7.23.6, @babel/generator@npm:^7.24.4, @babel/generator@npm:^7.24.7, @babel/generator@npm:^7.7.2": + version: 7.24.7 + resolution: "@babel/generator@npm:7.24.7" dependencies: - "@babel/types": ^7.23.6 - "@jridgewell/gen-mapping": ^0.3.2 - "@jridgewell/trace-mapping": ^0.3.17 + "@babel/types": ^7.24.7 + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.25 jsesc: ^2.5.1 - checksum: 1a1a1c4eac210f174cd108d479464d053930a812798e09fee069377de39a893422df5b5b146199ead7239ae6d3a04697b45fc9ac6e38e0f6b76374390f91fc6c + checksum: 0ff31a73b15429f1287e4d57b439bba4a266f8c673bb445fe313b82f6d110f586776997eb723a777cd7adad9d340edd162aea4973a90112c5d0cfcaf6686844b languageName: node linkType: hard -"@babel/helper-annotate-as-pure@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" +"@babel/helper-annotate-as-pure@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-annotate-as-pure@npm:7.24.7" dependencies: - "@babel/types": ^7.22.5 - checksum: 53da330f1835c46f26b7bf4da31f7a496dee9fd8696cca12366b94ba19d97421ce519a74a837f687749318f94d1a37f8d1abcbf35e8ed22c32d16373b2f6198d + "@babel/types": ^7.24.7 + checksum: 6178566099a6a0657db7a7fa601a54fb4731ca0b8614fbdccfd8e523c210c13963649bc8fdfd53ce7dd14d05e3dda2fb22dea5b30113c488b9eb1a906d60212e languageName: node linkType: hard -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.15" +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.24.7" dependencies: - "@babel/types": ^7.22.15 - checksum: 639c697a1c729f9fafa2dd4c9af2e18568190299b5907bd4c2d0bc818fcbd1e83ffeecc2af24327a7faa7ac4c34edd9d7940510a5e66296c19bad17001cf5c7a + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 71a6158a9fdebffb82fdc400d5555ba8f2e370cea81a0d578155877bdc4db7d5252b75c43b2fdf3f72b3f68348891f99bd35ae315542daad1b7ace8322b1abcb languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6": - version: 7.22.15 - resolution: "@babel/helper-compilation-targets@npm:7.22.15" +"@babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-compilation-targets@npm:7.24.7" dependencies: - "@babel/compat-data": ^7.22.9 - "@babel/helper-validator-option": ^7.22.15 - browserslist: ^4.21.9 + "@babel/compat-data": ^7.24.7 + "@babel/helper-validator-option": ^7.24.7 + browserslist: ^4.22.2 lru-cache: ^5.1.1 semver: ^6.3.1 - checksum: ce85196769e091ae54dd39e4a80c2a9df1793da8588e335c383d536d54f06baf648d0a08fc873044f226398c4ded15c4ae9120ee18e7dfd7c639a68e3cdc9980 + checksum: dfc88bc35e223ade796c7267901728217c665adc5bc2e158f7b0ae850de14f1b7941bec4fe5950ae46236023cfbdeddd9c747c276acf9b39ca31f8dd97dc6cc6 languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.22.11, @babel/helper-create-class-features-plugin@npm:^7.22.15, @babel/helper-create-class-features-plugin@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/helper-create-class-features-plugin@npm:7.22.15" +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-create-class-features-plugin@npm:7.24.7" dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-function-name": ^7.22.5 - "@babel/helper-member-expression-to-functions": ^7.22.15 - "@babel/helper-optimise-call-expression": ^7.22.5 - "@babel/helper-replace-supers": ^7.22.9 - "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-environment-visitor": ^7.24.7 + "@babel/helper-function-name": ^7.24.7 + "@babel/helper-member-expression-to-functions": ^7.24.7 + "@babel/helper-optimise-call-expression": ^7.24.7 + "@babel/helper-replace-supers": ^7.24.7 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 + "@babel/helper-split-export-declaration": ^7.24.7 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: 52c500d8d164abb3a360b1b7c4b8fff77bc4a5920d3a2b41ae6e1d30617b0dc0b972c1f5db35b1752007e04a748908b4a99bc872b73549ae837e87dcdde005a3 + checksum: 371a181a1717a9b0cebc97727c8ea9ca6afa34029476a684b6030f9d1ad94dcdafd7de175da10b63ae3ba79e4e82404db8ed968ebf264b768f097e5d64faab71 languageName: node linkType: hard -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.15" +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.24.7" dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 + "@babel/helper-annotate-as-pure": ^7.24.7 regexpu-core: ^5.3.1 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0 - checksum: 0243b8d4854f1dc8861b1029a46d3f6393ad72f366a5a08e36a4648aa682044f06da4c6e87a456260e1e1b33c999f898ba591a0760842c1387bcc93fbf2151a6 + checksum: 17c59fa222af50f643946eca940ce1d474ff2da1f4afed2312687ab9d708ebbb8c9372754ddbdf44b6e21ead88b8fc144644f3a7b63ccb886de002458cef3974 languageName: node linkType: hard @@ -175,163 +197,185 @@ __metadata: languageName: node linkType: hard -"@babel/helper-environment-visitor@npm:^7.22.20, @babel/helper-environment-visitor@npm:^7.22.5": - version: 7.22.20 - resolution: "@babel/helper-environment-visitor@npm:7.22.20" - checksum: d80ee98ff66f41e233f36ca1921774c37e88a803b2f7dca3db7c057a5fea0473804db9fb6729e5dbfd07f4bed722d60f7852035c2c739382e84c335661590b69 +"@babel/helper-define-polyfill-provider@npm:^0.6.1, @babel/helper-define-polyfill-provider@npm:^0.6.2": + version: 0.6.2 + resolution: "@babel/helper-define-polyfill-provider@npm:0.6.2" + dependencies: + "@babel/helper-compilation-targets": ^7.22.6 + "@babel/helper-plugin-utils": ^7.22.5 + debug: ^4.1.1 + lodash.debounce: ^4.0.8 + resolve: ^1.14.2 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 2bba965ea9a4887ddf9c11d51d740ab473bd7597b787d042c325f6a45912dfe908c2d6bb1d837bf82f7e9fa51e6ad5150563c58131d2bb85515e63d971414a9c languageName: node linkType: hard -"@babel/helper-function-name@npm:^7.22.5, @babel/helper-function-name@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/helper-function-name@npm:7.23.0" +"@babel/helper-environment-visitor@npm:^7.22.20, @babel/helper-environment-visitor@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-environment-visitor@npm:7.24.7" dependencies: - "@babel/template": ^7.22.15 - "@babel/types": ^7.23.0 - checksum: e44542257b2d4634a1f979244eb2a4ad8e6d75eb6761b4cfceb56b562f7db150d134bc538c8e6adca3783e3bc31be949071527aa8e3aab7867d1ad2d84a26e10 + "@babel/types": ^7.24.7 + checksum: 079d86e65701b29ebc10baf6ed548d17c19b808a07aa6885cc141b690a78581b180ee92b580d755361dc3b16adf975b2d2058b8ce6c86675fcaf43cf22f2f7c6 languageName: node linkType: hard -"@babel/helper-hoist-variables@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-hoist-variables@npm:7.22.5" +"@babel/helper-function-name@npm:^7.23.0, @babel/helper-function-name@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-function-name@npm:7.24.7" dependencies: - "@babel/types": ^7.22.5 - checksum: 394ca191b4ac908a76e7c50ab52102669efe3a1c277033e49467913c7ed6f7c64d7eacbeabf3bed39ea1f41731e22993f763b1edce0f74ff8563fd1f380d92cc + "@babel/template": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 142ee08922074dfdc0ff358e09ef9f07adf3671ab6eef4fca74dcf7a551f1a43717e7efa358c9e28d7eea84c28d7f177b7a58c70452fc312ae3b1893c5dab2a4 languageName: node linkType: hard -"@babel/helper-member-expression-to-functions@npm:^7.22.15": - version: 7.23.0 - resolution: "@babel/helper-member-expression-to-functions@npm:7.23.0" +"@babel/helper-hoist-variables@npm:^7.22.5, @babel/helper-hoist-variables@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-hoist-variables@npm:7.24.7" dependencies: - "@babel/types": ^7.23.0 - checksum: 494659361370c979ada711ca685e2efe9460683c36db1b283b446122596602c901e291e09f2f980ecedfe6e0f2bd5386cb59768285446530df10c14df1024e75 + "@babel/types": ^7.24.7 + checksum: 6cfdcf2289cd12185dcdbdf2435fa8d3447b797ac75851166de9fc8503e2fd0021db6baf8dfbecad3753e582c08e6a3f805c8d00cbed756060a877d705bd8d8d languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.18.6, @babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/helper-module-imports@npm:7.22.15" +"@babel/helper-member-expression-to-functions@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-member-expression-to-functions@npm:7.24.7" dependencies: - "@babel/types": ^7.22.15 - checksum: ecd7e457df0a46f889228f943ef9b4a47d485d82e030676767e6a2fdcbdaa63594d8124d4b55fd160b41c201025aec01fc27580352b1c87a37c9c6f33d116702 + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 9fecf412f85fa23b7cf55d19eb69de39f8240426a028b141c9df2aed8cfedf20b3ec3318d40312eb7a3dec9eea792828ce0d590e0ff62da3da532482f537192c languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/helper-module-transforms@npm:7.23.0" +"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.18.6, @babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-module-imports@npm:7.24.7" dependencies: - "@babel/helper-environment-visitor": ^7.22.20 - "@babel/helper-module-imports": ^7.22.15 - "@babel/helper-simple-access": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/helper-validator-identifier": ^7.22.20 + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 8ac15d96d262b8940bc469052a048e06430bba1296369be695fabdf6799f201dd0b00151762b56012a218464e706bc033f27c07f6cec20c6f8f5fd6543c67054 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.23.0, @babel/helper-module-transforms@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-module-transforms@npm:7.24.7" + dependencies: + "@babel/helper-environment-visitor": ^7.24.7 + "@babel/helper-module-imports": ^7.24.7 + "@babel/helper-simple-access": ^7.24.7 + "@babel/helper-split-export-declaration": ^7.24.7 + "@babel/helper-validator-identifier": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0 - checksum: 6e2afffb058cf3f8ce92f5116f710dda4341c81cfcd872f9a0197ea594f7ce0ab3cb940b0590af2fe99e60d2e5448bfba6bca8156ed70a2ed4be2adc8586c891 + checksum: ddff3b41c2667876b4e4e73d961168f48a5ec9560c95c8c2d109e6221f9ca36c6f90c6317eb7a47f2a3c99419c356e529a86b79174cad0d4f7a61960866b88ca languageName: node linkType: hard -"@babel/helper-optimise-call-expression@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" +"@babel/helper-optimise-call-expression@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-optimise-call-expression@npm:7.24.7" dependencies: - "@babel/types": ^7.22.5 - checksum: c70ef6cc6b6ed32eeeec4482127e8be5451d0e5282d5495d5d569d39eb04d7f1d66ec99b327f45d1d5842a9ad8c22d48567e93fc502003a47de78d122e355f7c + "@babel/types": ^7.24.7 + checksum: 280654eaf90e92bf383d7eed49019573fb35a98c9e992668f701ad099957246721044be2068cf6840cb2299e0ad393705a1981c88c23a1048096a8d59e5f79a3 languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.22.5 - resolution: "@babel/helper-plugin-utils@npm:7.22.5" - checksum: c0fc7227076b6041acd2f0e818145d2e8c41968cc52fb5ca70eed48e21b8fe6dd88a0a91cbddf4951e33647336eb5ae184747ca706817ca3bef5e9e905151ff5 +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.7, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": + version: 7.24.7 + resolution: "@babel/helper-plugin-utils@npm:7.24.7" + checksum: 81f2a15751d892e4a8fce25390f973363a5b27596167861d2d6eab0f61856eb2ba389b031a9f19f669c0bd4dd601185828d3cebafd25431be7a1696f2ce3ef68 languageName: node linkType: hard -"@babel/helper-remap-async-to-generator@npm:^7.22.20, @babel/helper-remap-async-to-generator@npm:^7.22.5": - version: 7.22.20 - resolution: "@babel/helper-remap-async-to-generator@npm:7.22.20" +"@babel/helper-remap-async-to-generator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-remap-async-to-generator@npm:7.24.7" dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-environment-visitor": ^7.22.20 - "@babel/helper-wrap-function": ^7.22.20 + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-environment-visitor": ^7.24.7 + "@babel/helper-wrap-function": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0 - checksum: 2fe6300a6f1b58211dffa0aed1b45d4958506d096543663dba83bd9251fe8d670fa909143a65b45e72acb49e7e20fbdb73eae315d9ddaced467948c3329986e7 + checksum: bab7be178f875350f22a2cb9248f67fe3a8a8128db77a25607096ca7599fd972bc7049fb11ed9e95b45a3f1dd1fac3846a3279f9cbac16f337ecb0e6ca76e1fc languageName: node linkType: hard -"@babel/helper-replace-supers@npm:^7.22.5, @babel/helper-replace-supers@npm:^7.22.9": - version: 7.22.20 - resolution: "@babel/helper-replace-supers@npm:7.22.20" +"@babel/helper-replace-supers@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-replace-supers@npm:7.24.7" dependencies: - "@babel/helper-environment-visitor": ^7.22.20 - "@babel/helper-member-expression-to-functions": ^7.22.15 - "@babel/helper-optimise-call-expression": ^7.22.5 + "@babel/helper-environment-visitor": ^7.24.7 + "@babel/helper-member-expression-to-functions": ^7.24.7 + "@babel/helper-optimise-call-expression": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0 - checksum: a0008332e24daedea2e9498733e3c39b389d6d4512637e000f96f62b797e702ee24a407ccbcd7a236a551590a38f31282829a8ef35c50a3c0457d88218cae639 + checksum: 2bf0d113355c60d86a04e930812d36f5691f26c82d4ec1739e5ec0a4c982c9113dad3167f7c74f888a96328bd5e696372232406d8200e5979e6e0dc2af5e7c76 languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-simple-access@npm:7.22.5" +"@babel/helper-simple-access@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-simple-access@npm:7.24.7" dependencies: - "@babel/types": ^7.22.5 - checksum: fe9686714caf7d70aedb46c3cce090f8b915b206e09225f1e4dbc416786c2fdbbee40b38b23c268b7ccef749dd2db35f255338fb4f2444429874d900dede5ad2 + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: ddbf55f9dea1900213f2a1a8500fabfd21c5a20f44dcfa957e4b0d8638c730f88751c77f678644f754f1a1dc73f4eb8b766c300deb45a9daad000e4247957819 languageName: node linkType: hard -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.22.5" +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.24.7" dependencies: - "@babel/types": ^7.22.5 - checksum: 1012ef2295eb12dc073f2b9edf3425661e9b8432a3387e62a8bc27c42963f1f216ab3124228015c748770b2257b4f1fda882ca8fa34c0bf485e929ae5bc45244 + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 11b28fe534ce2b1a67c4d8e51a7b5711a2a0a0cae802f74614eee54cca58c744d9a62f6f60103c41759e81c537d270bfd665bf368a6bea214c6052f2094f8407 languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/helper-split-export-declaration@npm:7.22.6" +"@babel/helper-split-export-declaration@npm:^7.22.6, @babel/helper-split-export-declaration@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-split-export-declaration@npm:7.24.7" dependencies: - "@babel/types": ^7.22.5 - checksum: e141cace583b19d9195f9c2b8e17a3ae913b7ee9b8120246d0f9ca349ca6f03cb2c001fd5ec57488c544347c0bb584afec66c936511e447fd20a360e591ac921 + "@babel/types": ^7.24.7 + checksum: e3ddc91273e5da67c6953f4aa34154d005a00791dc7afa6f41894e768748540f6ebcac5d16e72541aea0c89bee4b89b4da6a3d65972a0ea8bfd2352eda5b7e22 languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/helper-string-parser@npm:7.23.4" - checksum: c0641144cf1a7e7dc93f3d5f16d5327465b6cf5d036b48be61ecba41e1eece161b48f46b7f960951b67f8c3533ce506b16dece576baef4d8b3b49f8c65410f90 +"@babel/helper-string-parser@npm:^7.23.4, @babel/helper-string-parser@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-string-parser@npm:7.24.7" + checksum: 09568193044a578743dd44bf7397940c27ea693f9812d24acb700890636b376847a611cdd0393a928544e79d7ad5b8b916bd8e6e772bc8a10c48a647a96e7b1a languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.22.20": - version: 7.22.20 - resolution: "@babel/helper-validator-identifier@npm:7.22.20" - checksum: 136412784d9428266bcdd4d91c32bcf9ff0e8d25534a9d94b044f77fe76bc50f941a90319b05aafd1ec04f7d127cd57a179a3716009ff7f3412ef835ada95bdc +"@babel/helper-validator-identifier@npm:^7.22.20, @babel/helper-validator-identifier@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-validator-identifier@npm:7.24.7" + checksum: 6799ab117cefc0ecd35cd0b40ead320c621a298ecac88686a14cffceaac89d80cdb3c178f969861bf5fa5e4f766648f9161ea0752ecfe080d8e89e3147270257 languageName: node linkType: hard -"@babel/helper-validator-option@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/helper-validator-option@npm:7.22.15" - checksum: 68da52b1e10002a543161494c4bc0f4d0398c8fdf361d5f7f4272e95c45d5b32d974896d44f6a0ea7378c9204988879d73613ca683e13bd1304e46d25ff67a8d +"@babel/helper-validator-option@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-validator-option@npm:7.24.7" + checksum: 9689166bf3f777dd424c026841c8cd651e41b21242dbfd4569a53086179a3e744c8eddd56e9d10b54142270141c91581b53af0d7c00c82d552d2540e2a919f7e languageName: node linkType: hard -"@babel/helper-wrap-function@npm:^7.22.20": - version: 7.22.20 - resolution: "@babel/helper-wrap-function@npm:7.22.20" +"@babel/helper-wrap-function@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-wrap-function@npm:7.24.7" dependencies: - "@babel/helper-function-name": ^7.22.5 - "@babel/template": ^7.22.15 - "@babel/types": ^7.22.19 - checksum: 221ed9b5572612aeb571e4ce6a256f2dee85b3c9536f1dd5e611b0255e5f59a3d0ec392d8d46d4152149156a8109f92f20379b1d6d36abb613176e0e33f05fca + "@babel/helper-function-name": ^7.24.7 + "@babel/template": ^7.24.7 + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 085bf130ed08670336e3976f5841ae44e3e10001131632e22ef234659341978d2fd37e65785f59b6cb1745481347fc3bce84b33a685cacb0a297afbe1d2b03af languageName: node linkType: hard @@ -346,7 +390,7 @@ __metadata: languageName: node linkType: hard -"@babel/highlight@npm:7.23.4, @babel/highlight@npm:^7.23.4": +"@babel/highlight@npm:7.23.4": version: 7.23.4 resolution: "@babel/highlight@npm:7.23.4" dependencies: @@ -357,7 +401,19 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:7.23.9, @babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.15, @babel/parser@npm:^7.21.3, @babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.9": +"@babel/highlight@npm:^7.23.4, @babel/highlight@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/highlight@npm:7.24.7" + dependencies: + "@babel/helper-validator-identifier": ^7.24.7 + chalk: ^2.4.2 + js-tokens: ^4.0.0 + picocolors: ^1.0.0 + checksum: 5cd3a89f143671c4ac129960024ba678b669e6fc673ce078030f5175002d1d3d52bc10b22c5b916a6faf644b5028e9a4bd2bb264d053d9b05b6a98690f1d46f1 + languageName: node + linkType: hard + +"@babel/parser@npm:7.23.9": version: 7.23.9 resolution: "@babel/parser@npm:7.23.9" bin: @@ -366,27 +422,60 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.22.15" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.15, @babel/parser@npm:^7.21.3, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/parser@npm:7.24.7" + bin: + parser: ./bin/babel-parser.js + checksum: fc9d2c4c8712f89672edc55c0dc5cf640dcec715b56480f111f85c2bc1d507e251596e4110d65796690a96ac37a4b60432af90b3e97bb47e69d4ef83872dbbd6 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-environment-visitor": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0 - checksum: 8910ca21a7ec7c06f7b247d4b86c97c5aa15ef321518f44f6f490c5912fdf82c605aaa02b90892e375d82ccbedeadfdeadd922c1b836c9dd4c596871bf654753 + checksum: 68d315642b53af143aa17a71eb976cf431b51339aee584e29514a462b81c998636dd54219c2713b5f13e1df89eaf130dfab59683f9116825608708c81696b96c languageName: node linkType: hard -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.22.15" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 - "@babel/plugin-transform-optional-chaining": ^7.22.15 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 7eb4e7ce5e3d6db4b0fdbdfaaa301c2e58f38a7ee39d5a4259a1fda61a612e83d3e4bc90fc36fb0345baf57e1e1a071e0caffeb80218623ad163f2fdc2e53a54 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 + "@babel/plugin-transform-optional-chaining": ^7.24.7 peerDependencies: "@babel/core": ^7.13.0 - checksum: fbefedc0da014c37f1a50a8094ce7dbbf2181ae93243f23d6ecba2499b5b20196c2124d6a4dfe3e9e0125798e80593103e456352a4beb4e5c6f7c75efb80fdac + checksum: 07b92878ac58a98ea1fdf6a8b4ec3413ba4fa66924e28b694d63ec5b84463123fbf4d7153b56cf3cedfef4a3482c082fe3243c04f8fb2c041b32b0e29b4a9e21 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.24.7" + dependencies: + "@babel/helper-environment-visitor": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 8324d458db57060590942c7c2e9603880d07718ccb6450ec935105b8bd3c4393c4b8ada88e178c232258d91f33ffdcf2b1043d54e07a86989e50667ee100a32e languageName: node linkType: hard @@ -477,25 +566,36 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-import-assertions@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.22.5" +"@babel/plugin-syntax-flow@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-syntax-flow@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2b8b5572db04a7bef1e6cd20debf447e4eef7cb012616f5eceb8fa3e23ce469b8f76ee74fd6d1e158ba17a8f58b0aec579d092fb67c5a30e83ccfbc5754916c1 + checksum: 43b78b5fcdedb2a6d80c3d02a1a564fbfde86b73b442d616a8f318f673caa6ce0151513af5a00fcae42a512f144e70ef259d368b9537ee35d40336a6c895a7d4 languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.22.5" +"@babel/plugin-syntax-import-assertions@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: c4d67be4eb1d4637e361477dbe01f5b392b037d17c1f861cfa0faa120030e137aab90a9237931b8040fd31d1e5d159e11866fa1165f78beef7a3be876a391a17 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 197b3c5ea2a9649347f033342cb222ab47f4645633695205c0250c6bf2af29e643753b8bb24a2db39948bef08e7c540babfd365591eb57fc110cb30b425ffc47 + checksum: 590dbb5d1a15264f74670b427b8d18527672c3d6c91d7bae7e65f80fd810edbc83d90e68065088644cbad3f2457ed265a54a9956fb789fcb9a5b521822b3a275 languageName: node linkType: hard @@ -521,14 +621,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.22.5, @babel/plugin-syntax-jsx@npm:^7.7.2": - version: 7.22.5 - resolution: "@babel/plugin-syntax-jsx@npm:7.22.5" +"@babel/plugin-syntax-jsx@npm:^7.24.7, @babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.24.7 + resolution: "@babel/plugin-syntax-jsx@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8829d30c2617ab31393d99cec2978e41f014f4ac6f01a1cecf4c4dd8320c3ec12fdc3ce121126b2d8d32f6887e99ca1a0bad53dedb1e6ad165640b92b24980ce + checksum: 7a5ca629d8ca1e1ee78705a78e58c12920d07ed8006d7e7232b31296a384ff5e41d7b649bde5561196041037bbb9f9715be1d1c20975df87ca204f34ad15b965 languageName: node linkType: hard @@ -620,14 +720,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.22.5, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.22.5 - resolution: "@babel/plugin-syntax-typescript@npm:7.22.5" +"@babel/plugin-syntax-typescript@npm:^7.24.7, @babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.24.7 + resolution: "@babel/plugin-syntax-typescript@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8ab7718fbb026d64da93681a57797d60326097fd7cb930380c8bffd9eb101689e90142c760a14b51e8e69c88a73ba3da956cb4520a3b0c65743aee5c71ef360a + checksum: 56fe84f3044ecbf038977281648db6b63bd1301f2fff6595820dc10ee276c1d1586919d48d52a8d497ecae32c958be38f42c1c8d174dc58aad856c516dc5b35a languageName: node linkType: hard @@ -643,480 +743,491 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-arrow-functions@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.22.5" +"@babel/plugin-transform-arrow-functions@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 35abb6c57062802c7ce8bd96b2ef2883e3124370c688bbd67609f7d2453802fb73944df8808f893b6c67de978eb2bcf87bbfe325e46d6f39b5fcb09ece11d01a + checksum: 707c209b5331c7dc79bd326128c6a6640dbd62a78da1653c844db20c4f36bf7b68454f1bc4d2d051b3fde9136fa291f276ec03a071bb00ee653069ff82f91010 languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.23.2": - version: 7.23.2 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.23.2" +"@babel/plugin-transform-async-generator-functions@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.24.7" dependencies: - "@babel/helper-environment-visitor": ^7.22.20 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-remap-async-to-generator": ^7.22.20 + "@babel/helper-environment-visitor": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-remap-async-to-generator": ^7.24.7 "@babel/plugin-syntax-async-generators": ^7.8.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e1abae0edcda7304d7c17702ac25a127578791b89c4f767d60589249fa3e50ec33f8c9ff39d3d8d41f00b29947654eaddd4fd586e04c4d598122db745fab2868 + checksum: 112e3b18f9c496ebc01209fc27f0b41a3669c479c7bc44f7249383172b432ebaae1e523caa7c6ecbd2d0d7adcb7e5769fe2798f8cb01c08cd57232d1bb6d8ad4 languageName: node linkType: hard -"@babel/plugin-transform-async-to-generator@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.22.5" +"@babel/plugin-transform-async-to-generator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.24.7" dependencies: - "@babel/helper-module-imports": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-remap-async-to-generator": ^7.22.5 + "@babel/helper-module-imports": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-remap-async-to-generator": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b95f23f99dcb379a9f0a1c2a3bbea3f8dc0e1b16dc1ac8b484fe378370169290a7a63d520959a9ba1232837cf74a80e23f6facbe14fd42a3cda6d3c2d7168e62 + checksum: 13704fb3b83effc868db2b71bfb2c77b895c56cb891954fc362e95e200afd523313b0e7cf04ce02f45b05e76017c5b5fa8070c92613727a35131bb542c253a36 languageName: node linkType: hard -"@babel/plugin-transform-block-scoped-functions@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.22.5" +"@babel/plugin-transform-block-scoped-functions@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 416b1341858e8ca4e524dee66044735956ced5f478b2c3b9bc11ec2285b0c25d7dbb96d79887169eb938084c95d0a89338c8b2fe70d473bd9dc92e5d9db1732c + checksum: 249cdcbff4e778b177245f9652b014ea4f3cd245d83297f10a7bf6d97790074089aa62bcde8c08eb299c5e68f2faed346b587d3ebac44d625ba9a83a4ee27028 languageName: node linkType: hard -"@babel/plugin-transform-block-scoping@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/plugin-transform-block-scoping@npm:7.23.0" +"@babel/plugin-transform-block-scoping@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-block-scoping@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0cfe925cc3b5a3ad407e2253fab3ceeaa117a4b291c9cb245578880872999bca91bd83ffa0128ae9ca356330702e1ef1dcb26804f28d2cef678239caf629f73e + checksum: 039206155533600f079f3a455f85888dd7d4970ff7ffa85ef44760f4f5acb9f19c9d848cc1fec1b9bdbc0dfec9e8a080b90d0ab66ad2bdc7138b5ca4ba96e61c languageName: node linkType: hard -"@babel/plugin-transform-class-properties@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-class-properties@npm:7.22.5" +"@babel/plugin-transform-class-properties@npm:^7.22.5, @babel/plugin-transform-class-properties@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-class-properties@npm:7.24.7" dependencies: - "@babel/helper-create-class-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-create-class-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b830152dfc2ff2f647f0abe76e6251babdfbef54d18c4b2c73a6bf76b1a00050a5d998dac80dc901a48514e95604324943a9dd39317073fe0928b559e0e0c579 + checksum: 1348d7ce74da38ba52ea85b3b4289a6a86913748569ef92ef0cff30702a9eb849e5eaf59f1c6f3517059aa68115fb3067e389735dccacca39add4e2b0c67e291 languageName: node linkType: hard -"@babel/plugin-transform-class-static-block@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/plugin-transform-class-static-block@npm:7.22.11" +"@babel/plugin-transform-class-static-block@npm:^7.22.11, @babel/plugin-transform-class-static-block@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-class-static-block@npm:7.24.7" dependencies: - "@babel/helper-create-class-features-plugin": ^7.22.11 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-create-class-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 "@babel/plugin-syntax-class-static-block": ^7.14.5 peerDependencies: "@babel/core": ^7.12.0 - checksum: 69f040506fad66f1c6918d288d0e0edbc5c8a07c8b4462c1184ad2f9f08995d68b057126c213871c0853ae0c72afc60ec87492049dfacb20902e32346a448bcb + checksum: 324049263504f18416f1c3e24033baebfafd05480fdd885c8ebe6f2b415b0fc8e0b98d719360f9e30743cc78ac387fabc0b3c6606d2b54135756ffb92963b382 languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/plugin-transform-classes@npm:7.22.15" +"@babel/plugin-transform-classes@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-classes@npm:7.24.7" dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-compilation-targets": ^7.22.15 - "@babel/helper-environment-visitor": ^7.22.5 - "@babel/helper-function-name": ^7.22.5 - "@babel/helper-optimise-call-expression": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-replace-supers": ^7.22.9 - "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-compilation-targets": ^7.24.7 + "@babel/helper-environment-visitor": ^7.24.7 + "@babel/helper-function-name": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-replace-supers": ^7.24.7 + "@babel/helper-split-export-declaration": ^7.24.7 globals: ^11.1.0 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d3f4d0c107dd8a3557ea3575cc777fab27efa92958b41e4a9822f7499725c1f554beae58855de16ddec0a7b694e45f59a26cea8fbde4275563f72f09c6e039a0 + checksum: f01cb31143730d425681e9816020cbb519c7ddb3b6ca308dfaf2821eda5699a746637fc6bf19811e2fb42cfdf8b00a21b31c754da83771a5c280077925677354 languageName: node linkType: hard -"@babel/plugin-transform-computed-properties@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-computed-properties@npm:7.22.5" +"@babel/plugin-transform-computed-properties@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-computed-properties@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/template": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/template": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c2a77a0f94ec71efbc569109ec14ea2aa925b333289272ced8b33c6108bdbb02caf01830ffc7e49486b62dec51911924d13f3a76f1149f40daace1898009e131 + checksum: 0cf8c1b1e4ea57dec8d4612460d84fd4cdbf71a7499bb61ee34632cf89018a59eee818ffca88a8d99ee7057c20a4257044d7d463fda6daef9bf1db9fa81563cb languageName: node linkType: hard -"@babel/plugin-transform-destructuring@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/plugin-transform-destructuring@npm:7.23.0" +"@babel/plugin-transform-destructuring@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-destructuring@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: cd6dd454ccc2766be551e4f8a04b1acc2aa539fa19e5c7501c56cc2f8cc921dd41a7ffb78455b4c4b2f954fcab8ca4561ba7c9c7bd5af9f19465243603d18cc3 + checksum: b9637b27faf9d24a8119bc5a1f98a2f47c69e6441bd8fc71163500be316253a72173308a93122bcf27d8d314ace43344c976f7291cf6376767f408350c8149d4 languageName: node linkType: hard -"@babel/plugin-transform-dotall-regex@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.22.5" +"@babel/plugin-transform-dotall-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.24.7" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-create-regexp-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 409b658d11e3082c8f69e9cdef2d96e4d6d11256f005772425fb230cc48fd05945edbfbcb709dab293a1a2f01f9c8a5bb7b4131e632b23264039d9f95864b453 + checksum: 67b10fc6abb1f61f0e765288eb4c6d63d1d0f9fc0660e69f6f2170c56fa16bc74e49857afc644beda112b41771cd90cf52df0940d11e97e52617c77c7dcff171 languageName: node linkType: hard -"@babel/plugin-transform-duplicate-keys@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.22.5" +"@babel/plugin-transform-duplicate-keys@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: bb1280fbabaab6fab2ede585df34900712698210a3bd413f4df5bae6d8c24be36b496c92722ae676a7a67d060a4624f4d6c23b923485f906bfba8773c69f55b4 + checksum: d1da2ff85ecb56a63f4ccfd9dc9ae69400d85f0dadf44ecddd9e71c6e5c7a9178e74e3a9637555f415a2bb14551e563f09f98534ab54f53d25e8439fdde6ba2d languageName: node linkType: hard -"@babel/plugin-transform-dynamic-import@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/plugin-transform-dynamic-import@npm:7.22.11" +"@babel/plugin-transform-dynamic-import@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 "@babel/plugin-syntax-dynamic-import": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 78fc9c532210bf9e8f231747f542318568ac360ee6c27e80853962c984283c73da3f8f8aebe83c2096090a435b356b092ed85de617a156cbe0729d847632be45 + checksum: 776509ff62ab40c12be814a342fc56a5cc09b91fb63032b2633414b635875fd7da03734657be0f6db2891fe6e3033b75d5ddb6f2baabd1a02e4443754a785002 languageName: node linkType: hard -"@babel/plugin-transform-exponentiation-operator@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.22.5" +"@babel/plugin-transform-exponentiation-operator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.24.7" dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-builder-binary-assignment-operator-visitor": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f2d660c1b1d51ad5fec1cd5ad426a52187204068c4158f8c4aa977b31535c61b66898d532603eef21c15756827be8277f724c869b888d560f26d7fe848bb5eae + checksum: 23c84a23eb56589fdd35a3540f9a1190615be069110a2270865223c03aee3ba4e0fc68fe14850800cf36f0712b26e4964d3026235261f58f0405a29fe8dac9b1 languageName: node linkType: hard -"@babel/plugin-transform-export-namespace-from@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/plugin-transform-export-namespace-from@npm:7.22.11" +"@babel/plugin-transform-export-namespace-from@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 "@babel/plugin-syntax-export-namespace-from": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 73af5883a321ed56a4bfd43c8a7de0164faebe619287706896fc6ee2f7a4e69042adaa1338c0b8b4bdb9f7e5fdceb016fb1d40694cb43ca3b8827429e8aac4bf + checksum: 3bd3a10038f10ae0dea1ee42137f3edcf7036b5e9e570a0d1cbd0865f03658990c6c2d84fa2475f87a754e7dc5b46766c16f7ce5c9b32c3040150b6a21233a80 languageName: node linkType: hard -"@babel/plugin-transform-for-of@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/plugin-transform-for-of@npm:7.22.15" +"@babel/plugin-transform-flow-strip-types@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-flow": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f395ae7bce31e14961460f56cf751b5d6e37dd27d7df5b1f4e49fec1c11b6f9cf71991c7ffbe6549878591e87df0d66af798cf26edfa4bfa6b4c3dba1fb2f73a + checksum: 260bd95b1a90ff4af11bf8e21e6dd35b1b7863daffb12a5b2018e2806fec033a7883114dc5f0b67d594ca93fe6f2c9894944c865dd2c51affb7da0f9a6473872 languageName: node linkType: hard -"@babel/plugin-transform-function-name@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-function-name@npm:7.22.5" +"@babel/plugin-transform-for-of@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-for-of@npm:7.24.7" dependencies: - "@babel/helper-compilation-targets": ^7.22.5 - "@babel/helper-function-name": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: cff3b876357999cb8ae30e439c3ec6b0491a53b0aa6f722920a4675a6dd5b53af97a833051df4b34791fe5b3dd326ccf769d5c8e45b322aa50ee11a660b17845 + checksum: a53b42dc93ab4b7d1ebd3c695b52be22b3d592f6a3dbdb3dc2fea2c8e0a7e1508fe919864c455cde552aec44ce7518625fccbb70c7063373ca228d884f4f49ea languageName: node linkType: hard -"@babel/plugin-transform-json-strings@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/plugin-transform-json-strings@npm:7.22.11" +"@babel/plugin-transform-function-name@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-function-name@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-compilation-targets": ^7.24.7 + "@babel/helper-function-name": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8eb1a67894a124910b5a67630bed4307757504381f39f0fb5cf82afc7ae8647dbc03b256d13865b73a749b9071b68e9fb8a28cef2369917b4299ebb93fd66146 + languageName: node + linkType: hard + +"@babel/plugin-transform-json-strings@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-json-strings@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 "@babel/plugin-syntax-json-strings": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 50665e5979e66358c50e90a26db53c55917f78175127ac2fa05c7888d156d418ffb930ec0a109353db0a7c5f57c756ce01bfc9825d24cbfd2b3ec453f2ed8cba + checksum: 88874d0b7a1ddea66c097fc0abb68801ffae194468aa44b828dde9a0e20ac5d8647943793de86092eabaa2911c96f67a6b373793d4bb9c932ef81b2711c06c2e languageName: node linkType: hard -"@babel/plugin-transform-literals@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-literals@npm:7.22.5" +"@babel/plugin-transform-literals@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-literals@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ec37cc2ffb32667af935ab32fe28f00920ec8a1eb999aa6dc6602f2bebd8ba205a558aeedcdccdebf334381d5c57106c61f52332045730393e73410892a9735b + checksum: 3c075cc093a3dd9e294b8b7d6656e65f889e7ca2179ca27978dcd65b4dc4885ebbfb327408d7d8f483c55547deed00ba840956196f3ac8a3c3d2308a330a8c23 languageName: node linkType: hard -"@babel/plugin-transform-logical-assignment-operators@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.22.11" +"@babel/plugin-transform-logical-assignment-operators@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c664e9798e85afa7f92f07b867682dee7392046181d82f5d21bae6f2ca26dfe9c8375cdc52b7483c3fc09a983c1989f60eff9fbc4f373b0c0a74090553d05739 + checksum: 3367ce0be243704dc6fce23e86a592c4380f01998ee5dd9f94c54b1ef7b971ac6f8a002901eb51599ac6cbdc0d067af8d1a720224fca1c40fde8bb8aab804aac languageName: node linkType: hard -"@babel/plugin-transform-member-expression-literals@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.22.5" +"@babel/plugin-transform-member-expression-literals@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ec4b0e07915ddd4fda0142fd104ee61015c208608a84cfa13643a95d18760b1dc1ceb6c6e0548898b8c49e5959a994e46367260176dbabc4467f729b21868504 + checksum: 2720c57aa3bf70576146ba7d6ea03227f4611852122d76d237924f7b008dafc952e6ae61a19e5024f26c665f44384bbd378466f01b6bd1305b3564a3b7fb1a5d languageName: node linkType: hard -"@babel/plugin-transform-modules-amd@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/plugin-transform-modules-amd@npm:7.23.0" +"@babel/plugin-transform-modules-amd@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-modules-amd@npm:7.24.7" dependencies: - "@babel/helper-module-transforms": ^7.23.0 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-module-transforms": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 5d92875170a37b8282d4bcd805f55829b8fab0f9c8d08b53d32a7a0bfdc62b868e489b52d329ae768ecafc0c993eed0ad7a387baa673ac33211390a9f833ab5d + checksum: f1dd0fb2f46c0f8f21076b8c7ccd5b33a85ce6dcb31518ea4c648d9a5bb2474cd4bd87c9b1b752e68591e24b022e334ba0d07631fef2b6b4d8a4b85cf3d581f5 languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.23.0" +"@babel/plugin-transform-modules-commonjs@npm:^7.23.0, @babel/plugin-transform-modules-commonjs@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.24.7" dependencies: - "@babel/helper-module-transforms": ^7.23.0 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-simple-access": ^7.22.5 + "@babel/helper-module-transforms": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-simple-access": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7fb25997194053e167c4207c319ff05362392da841bd9f42ddb3caf9c8798a5d203bd926d23ddf5830fdf05eddc82c2810f40d1287e3a4f80b07eff13d1024b5 + checksum: bfda2a0297197ed342e2a02e5f9847a489a3ae40a4a7d7f00f4aeb8544a85e9006e0c5271c8f61f39bc97975ef2717b5594cf9486694377a53433162909d64c1 languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.23.0" +"@babel/plugin-transform-modules-systemjs@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.24.7" dependencies: - "@babel/helper-hoist-variables": ^7.22.5 - "@babel/helper-module-transforms": ^7.23.0 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-validator-identifier": ^7.22.20 + "@babel/helper-hoist-variables": ^7.24.7 + "@babel/helper-module-transforms": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-validator-identifier": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2d481458b22605046badea2317d5cc5c94ac3031c2293e34c96f02063f5b02af0979c4da6a8fbc67cc249541575dc9c6d710db6b919ede70b7337a22d9fd57a7 + checksum: 8af7a9db2929991d82cfdf41fb175dee344274d39b39122f8c35f24b5d682f98368e3d8f5130401298bd21412df21d416a7d8b33b59c334fae3d3c762118b1d8 languageName: node linkType: hard -"@babel/plugin-transform-modules-umd@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-modules-umd@npm:7.22.5" +"@babel/plugin-transform-modules-umd@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-modules-umd@npm:7.24.7" dependencies: - "@babel/helper-module-transforms": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-module-transforms": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 46622834c54c551b231963b867adbc80854881b3e516ff29984a8da989bd81665bd70e8cba6710345248e97166689310f544aee1a5773e262845a8f1b3e5b8b4 + checksum: 9ff1c464892efe042952ba778468bda6131b196a2729615bdcc3f24cdc94014f016a4616ee5643c5845bade6ba698f386833e61056d7201314b13a7fd69fac88 languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.22.5" +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.24.7" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-create-regexp-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0 - checksum: 3ee564ddee620c035b928fdc942c5d17e9c4b98329b76f9cefac65c111135d925eb94ed324064cd7556d4f5123beec79abea1d4b97d1c8a2a5c748887a2eb623 + checksum: f1c6c7b5d60a86b6d7e4dd098798e1d393d55e993a0b57a73b53640c7a94985b601a96bdacee063f809a9a700bcea3a2ff18e98fa561554484ac56b761d774bd languageName: node linkType: hard -"@babel/plugin-transform-new-target@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-new-target@npm:7.22.5" +"@babel/plugin-transform-new-target@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-new-target@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6b72112773487a881a1d6ffa680afde08bad699252020e86122180ee7a88854d5da3f15d9bca3331cf2e025df045604494a8208a2e63b486266b07c14e2ffbf3 + checksum: 3cb94cd1076b270f768f91fdcf9dd2f6d487f8dbfff3df7ca8d07b915900b86d02769a35ba1407d16fe49499012c8f055e1741299e2c880798b953d942a8fa1b languageName: node linkType: hard -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.22.11" +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.22.11, @babel/plugin-transform-nullish-coalescing-operator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 167babecc8b8fe70796a7b7d34af667ebbf43da166c21689502e5e8cc93180b7a85979c77c9f64b7cce431b36718bd0a6df9e5e0ffea4ae22afb22cfef886372 + checksum: 4a9221356401d87762afbc37a9e8e764afc2daf09c421117537820f8cfbed6876888372ad3a7bcfae2d45c95f026651f050ab4020b777be31d3ffb00908dbdd3 languageName: node linkType: hard -"@babel/plugin-transform-numeric-separator@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/plugin-transform-numeric-separator@npm:7.22.11" +"@babel/plugin-transform-numeric-separator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 "@babel/plugin-syntax-numeric-separator": ^7.10.4 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: af064d06a4a041767ec396a5f258103f64785df290e038bba9f0ef454e6c914f2ac45d862bbdad8fac2c7ad47fa4e95356f29053c60c100a0160b02a995fe2a3 + checksum: 561b5f1d08b2c3f92ce849f092751558b5e6cfeb7eb55c79e7375c34dd9c3066dce5e630bb439affef6adcf202b6cbcaaa23870070276fa5bb429c8f5b8c7514 languageName: node linkType: hard -"@babel/plugin-transform-object-rest-spread@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.22.15" +"@babel/plugin-transform-object-rest-spread@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.24.7" dependencies: - "@babel/compat-data": ^7.22.9 - "@babel/helper-compilation-targets": ^7.22.15 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-compilation-targets": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 "@babel/plugin-syntax-object-rest-spread": ^7.8.3 - "@babel/plugin-transform-parameters": ^7.22.15 + "@babel/plugin-transform-parameters": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 62197a6f12289c1c1bd57f3bed9f0f765ca32390bfe91e0b5561dd94dd9770f4480c4162dec98da094bc0ba99d2c2ebba68de47c019454041b0b7a68ba2ec66d + checksum: 169d257b9800c13e1feb4c37fb05dae84f702e58b342bb76e19e82e6692b7b5337c9923ee89e3916a97c0dd04a3375bdeca14f5e126f110bbacbeb46d1886ca2 languageName: node linkType: hard -"@babel/plugin-transform-object-super@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-object-super@npm:7.22.5" +"@babel/plugin-transform-object-super@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-object-super@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-replace-supers": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-replace-supers": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b71887877d74cb64dbccb5c0324fa67e31171e6a5311991f626650e44a4083e5436a1eaa89da78c0474fb095d4ec322d63ee778b202d33aa2e4194e1ed8e62d7 + checksum: f71e607a830ee50a22fa1a2686524d3339440cf9dea63032f6efbd865cfe4e35000e1e3f3492459e5c986f7c0c07dc36938bf3ce61fc9ba5f8ab732d0b64ab37 languageName: node linkType: hard -"@babel/plugin-transform-optional-catch-binding@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.22.11" +"@babel/plugin-transform-optional-catch-binding@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f17abd90e1de67c84d63afea29c8021c74abb2794d3a6eeafb0bbe7372d3db32aefca386e392116ec63884537a4a2815d090d26264d259bacc08f6e3ed05294c + checksum: 7229f3a5a4facaab40f4fdfc7faabc157dc38a67d66bed7936599f4bc509e0bff636f847ac2aa45294881fce9cf8a0a460b85d2a465b7b977de9739fce9b18f6 languageName: node linkType: hard -"@babel/plugin-transform-optional-chaining@npm:^7.22.15, @babel/plugin-transform-optional-chaining@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.23.0" +"@babel/plugin-transform-optional-chaining@npm:^7.23.0, @babel/plugin-transform-optional-chaining@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 "@babel/plugin-syntax-optional-chaining": ^7.8.3 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f702634f2b97e5260dbec0d4bde05ccb6f4d96d7bfa946481aeacfa205ca846cb6e096a38312f9d51fdbdac1f258f211138c5f7075952e46a5bf8574de6a1329 + checksum: 877e7ce9097d475132c7f4d1244de50bb2fd37993dc4580c735f18f8cbc49282f6e77752821bcad5ca9d3528412d2c8a7ee0aa7ca71bb680ff82648e7a5fed25 languageName: node linkType: hard -"@babel/plugin-transform-parameters@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/plugin-transform-parameters@npm:7.22.15" +"@babel/plugin-transform-parameters@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-parameters@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 541188bb7d1876cad87687b5c7daf90f63d8208ae83df24acb1e2b05020ad1c78786b2723ca4054a83fcb74fb6509f30c4cacc5b538ee684224261ad5fb047c1 + checksum: ab534b03ac2eff94bc79342b8f39a4584666f5305a6c63c1964afda0b1b004e6b861e49d1683548030defe248e3590d3ff6338ee0552cb90c064f7e1479968c3 languageName: node linkType: hard -"@babel/plugin-transform-private-methods@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-private-methods@npm:7.22.5" +"@babel/plugin-transform-private-methods@npm:^7.22.5, @babel/plugin-transform-private-methods@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-private-methods@npm:7.24.7" dependencies: - "@babel/helper-create-class-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-create-class-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 321479b4fcb6d3b3ef622ab22fd24001e43d46e680e8e41324c033d5810c84646e470f81b44cbcbef5c22e99030784f7cac92f1829974da7a47a60a7139082c3 + checksum: c151548e34909be2adcceb224d8fdd70bafa393bc1559a600906f3f647317575bf40db670470934a360e90ee8084ef36dffa34ec25d387d414afd841e74cf3fe languageName: node linkType: hard -"@babel/plugin-transform-private-property-in-object@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.22.11" +"@babel/plugin-transform-private-property-in-object@npm:^7.22.11, @babel/plugin-transform-private-property-in-object@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.24.7" dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-create-class-features-plugin": ^7.22.11 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-create-class-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 "@babel/plugin-syntax-private-property-in-object": ^7.14.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4d029d84901e53c46dead7a46e2990a7bc62470f4e4ca58a0d063394f86652fd58fe4eea1eb941da3669cd536b559b9d058b342b59300026346b7a2a51badac8 + checksum: 8cee9473095305cc787bb653fd681719b49363281feabf677db8a552e8e41c94441408055d7e5fd5c7d41b315e634fa70b145ad0c7c54456216049df4ed57350 languageName: node linkType: hard -"@babel/plugin-transform-property-literals@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-property-literals@npm:7.22.5" +"@babel/plugin-transform-property-literals@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-property-literals@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 796176a3176106f77fcb8cd04eb34a8475ce82d6d03a88db089531b8f0453a2fb8b0c6ec9a52c27948bc0ea478becec449893741fc546dfc3930ab927e3f9f2e + checksum: 9aeefc3aab6c6bf9d1fae1cf3a2d38c7d886fd3c6c81b7c608c477f5758aee2e7abf52f32724310fe861da61af934ee2508b78a5b5f234b9740c9134e1c14437 languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/plugin-transform-regenerator@npm:7.22.10" +"@babel/plugin-transform-regenerator@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-regenerator@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 regenerator-transform: ^0.15.2 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e13678d62d6fa96f11cb8b863f00e8693491e7adc88bfca3f2820f80cbac8336e7dec3a596eee6a1c4663b7ececc3564f2cd7fb44ed6d4ce84ac2bb7f39ecc6e + checksum: 20c6c3fb6fc9f407829087316653388d311e8c1816b007609bb09aeef254092a7157adace8b3aaa8f34be752503717cb85c88a5fe482180a9b11bcbd676063be languageName: node linkType: hard -"@babel/plugin-transform-reserved-words@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-reserved-words@npm:7.22.5" +"@babel/plugin-transform-reserved-words@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-reserved-words@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3ffd7dbc425fe8132bfec118b9817572799cab1473113a635d25ab606c1f5a2341a636c04cf6b22df3813320365ed5a965b5eeb3192320a10e4cc2c137bd8bfc + checksum: 3d5876954d5914d7270819479504f30c4bf5452a65c677f44e2dab2db50b3c9d4b47793c45dfad7abf4f377035dd79e4b3f554ae350df9f422201d370ce9f8dd languageName: node linkType: hard @@ -1136,141 +1247,143 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-shorthand-properties@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.22.5" +"@babel/plugin-transform-shorthand-properties@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a5ac902c56ea8effa99f681340ee61bac21094588f7aef0bc01dff98246651702e677552fa6d10e548c4ac22a3ffad047dd2f8c8f0540b68316c2c203e56818b + checksum: 7b524245814607188212b8eb86d8c850e5974203328455a30881b4a92c364b93353fae14bc2af5b614ef16300b75b8c1d3b8f3a08355985b4794a7feb240adc3 languageName: node linkType: hard -"@babel/plugin-transform-spread@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-spread@npm:7.22.5" +"@babel/plugin-transform-spread@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-spread@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-skip-transparent-expression-wrappers": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-skip-transparent-expression-wrappers": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 5587f0deb60b3dfc9b274e269031cc45ec75facccf1933ea2ea71ced9fd3ce98ed91bb36d6cd26817c14474b90ed998c5078415f0eab531caf301496ce24c95c + checksum: 4c4254c8b9cceb1a8f975fa9b92257ddb08380a35c0a3721b8f4b9e13a3d82e403af2e0fba577b9f2452dd8f06bc3dea71cc53b1e2c6af595af5db52a13429d6 languageName: node linkType: hard -"@babel/plugin-transform-sticky-regex@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.22.5" +"@babel/plugin-transform-sticky-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 63b2c575e3e7f96c32d52ed45ee098fb7d354b35c2223b8c8e76840b32cc529ee0c0ceb5742fd082e56e91e3d82842a367ce177e82b05039af3d602c9627a729 + checksum: 118fc7a7ebf7c20411b670c8a030535fdfe4a88bc5643bb625a584dbc4c8a468da46430a20e6bf78914246962b0f18f1b9d6a62561a7762c4f34a038a5a77179 languageName: node linkType: hard -"@babel/plugin-transform-template-literals@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-template-literals@npm:7.22.5" +"@babel/plugin-transform-template-literals@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-template-literals@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 27e9bb030654cb425381c69754be4abe6a7c75b45cd7f962cd8d604b841b2f0fb7b024f2efc1c25cc53f5b16d79d5e8cfc47cacbdaa983895b3aeefa3e7e24ff + checksum: ad44e5826f5a98c1575832dbdbd033adfe683cdff195e178528ead62507564bf02f479b282976cfd3caebad8b06d5fd7349c1cdb880dec3c56daea4f1f179619 languageName: node linkType: hard -"@babel/plugin-transform-typeof-symbol@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.22.5" +"@babel/plugin-transform-typeof-symbol@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 82a53a63ffc3010b689ca9a54e5f53b2718b9f4b4a9818f36f9b7dba234f38a01876680553d2716a645a61920b5e6e4aaf8d4a0064add379b27ca0b403049512 + checksum: 6bd16b9347614d44187d8f8ee23ebd7be30dabf3632eed5ff0415f35a482e827de220527089eae9cdfb75e85aa72db0e141ebc2247c4b1187c1abcdacdc34895 languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/plugin-transform-typescript@npm:7.22.15" +"@babel/plugin-transform-typescript@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-typescript@npm:7.24.7" dependencies: - "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-create-class-features-plugin": ^7.22.15 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/plugin-syntax-typescript": ^7.22.5 + "@babel/helper-annotate-as-pure": ^7.24.7 + "@babel/helper-create-class-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/plugin-syntax-typescript": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c5d96cdbf0e1512707aa1c1e3ac6b370a25fd9c545d26008ce44eb13a47bd7fd67a1eb799c98b5ccc82e33a345fda55c0055e1fe3ed97646ed405dd13020b226 + checksum: 6b367d1e3d6bdbe438878a76436fc6903e2b4fd7c31fa036d43865570d282679ec3f7c0306399851f2866a9b36686a0ea8c343df3750f70d427f1fe20ca54310 languageName: node linkType: hard -"@babel/plugin-transform-unicode-escapes@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.22.10" +"@babel/plugin-transform-unicode-escapes@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 807f40ed1324c8cb107c45358f1903384ca3f0ef1d01c5a3c5c9b271c8d8eec66936a3dcc8d75ddfceea9421420368c2e77ae3adef0a50557e778dfe296bf382 + checksum: 4af0a193e1ddea6ff82b2b15cc2501b872728050bd625740b813c8062fec917d32d530ff6b41de56c15e7296becdf3336a58db81f5ca8e7c445c1306c52f3e01 languageName: node linkType: hard -"@babel/plugin-transform-unicode-property-regex@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.22.5" +"@babel/plugin-transform-unicode-property-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.24.7" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-create-regexp-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2495e5f663cb388e3d888b4ba3df419ac436a5012144ac170b622ddfc221f9ea9bdba839fa2bc0185cb776b578030666406452ec7791cbf0e7a3d4c88ae9574c + checksum: aae13350c50973f5802ca7906d022a6a0cc0e3aebac9122d0450bbd51e78252d4c2032ad69385e2759fcbdd3aac5d571bd7e26258907f51f8e1a51b53be626c2 languageName: node linkType: hard -"@babel/plugin-transform-unicode-regex@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.22.5" +"@babel/plugin-transform-unicode-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.24.7" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-create-regexp-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6b5d1404c8c623b0ec9bd436c00d885a17d6a34f3f2597996343ddb9d94f6379705b21582dfd4cec2c47fd34068872e74ab6b9580116c0566b3f9447e2a7fa06 + checksum: 1cb4e70678906e431da0a05ac3f8350025fee290304ad7482d9cfaa1ca67b2e898654de537c9268efbdad5b80d3ebadf42b4a88ea84609bd8a4cce7b11b48afd languageName: node linkType: hard -"@babel/plugin-transform-unicode-sets-regex@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.22.5" +"@babel/plugin-transform-unicode-sets-regex@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.24.7" dependencies: - "@babel/helper-create-regexp-features-plugin": ^7.22.5 - "@babel/helper-plugin-utils": ^7.22.5 + "@babel/helper-create-regexp-features-plugin": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 peerDependencies: "@babel/core": ^7.0.0 - checksum: c042070f980b139547f8b0179efbc049ac5930abec7fc26ed7a41d89a048d8ab17d362200e204b6f71c3c20d6991a0e74415e1a412a49adc8131c2a40c04822e + checksum: 08a2844914f33dacd2ce1ab021ce8c1cc35dc6568521a746d8bf29c21571ee5be78787b454231c4bb3526cbbe280f1893223c82726cec5df2be5dae0a3b51837 languageName: node linkType: hard -"@babel/preset-env@npm:^7.23.2": - version: 7.23.2 - resolution: "@babel/preset-env@npm:7.23.2" +"@babel/preset-env@npm:^7.23.2, @babel/preset-env@npm:^7.24.4": + version: 7.24.7 + resolution: "@babel/preset-env@npm:7.24.7" dependencies: - "@babel/compat-data": ^7.23.2 - "@babel/helper-compilation-targets": ^7.22.15 - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-validator-option": ^7.22.15 - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.22.15 - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.22.15 + "@babel/compat-data": ^7.24.7 + "@babel/helper-compilation-targets": ^7.24.7 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-validator-option": ^7.24.7 + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": ^7.24.7 + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": ^7.24.7 + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.24.7 + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ^7.24.7 "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2 "@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-import-assertions": ^7.22.5 - "@babel/plugin-syntax-import-attributes": ^7.22.5 + "@babel/plugin-syntax-import-assertions": ^7.24.7 + "@babel/plugin-syntax-import-attributes": ^7.24.7 "@babel/plugin-syntax-import-meta": ^7.10.4 "@babel/plugin-syntax-json-strings": ^7.8.3 "@babel/plugin-syntax-logical-assignment-operators": ^7.10.4 @@ -1282,64 +1395,76 @@ __metadata: "@babel/plugin-syntax-private-property-in-object": ^7.14.5 "@babel/plugin-syntax-top-level-await": ^7.14.5 "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 - "@babel/plugin-transform-arrow-functions": ^7.22.5 - "@babel/plugin-transform-async-generator-functions": ^7.23.2 - "@babel/plugin-transform-async-to-generator": ^7.22.5 - "@babel/plugin-transform-block-scoped-functions": ^7.22.5 - "@babel/plugin-transform-block-scoping": ^7.23.0 - "@babel/plugin-transform-class-properties": ^7.22.5 - "@babel/plugin-transform-class-static-block": ^7.22.11 - "@babel/plugin-transform-classes": ^7.22.15 - "@babel/plugin-transform-computed-properties": ^7.22.5 - "@babel/plugin-transform-destructuring": ^7.23.0 - "@babel/plugin-transform-dotall-regex": ^7.22.5 - "@babel/plugin-transform-duplicate-keys": ^7.22.5 - "@babel/plugin-transform-dynamic-import": ^7.22.11 - "@babel/plugin-transform-exponentiation-operator": ^7.22.5 - "@babel/plugin-transform-export-namespace-from": ^7.22.11 - "@babel/plugin-transform-for-of": ^7.22.15 - "@babel/plugin-transform-function-name": ^7.22.5 - "@babel/plugin-transform-json-strings": ^7.22.11 - "@babel/plugin-transform-literals": ^7.22.5 - "@babel/plugin-transform-logical-assignment-operators": ^7.22.11 - "@babel/plugin-transform-member-expression-literals": ^7.22.5 - "@babel/plugin-transform-modules-amd": ^7.23.0 - "@babel/plugin-transform-modules-commonjs": ^7.23.0 - "@babel/plugin-transform-modules-systemjs": ^7.23.0 - "@babel/plugin-transform-modules-umd": ^7.22.5 - "@babel/plugin-transform-named-capturing-groups-regex": ^7.22.5 - "@babel/plugin-transform-new-target": ^7.22.5 - "@babel/plugin-transform-nullish-coalescing-operator": ^7.22.11 - "@babel/plugin-transform-numeric-separator": ^7.22.11 - "@babel/plugin-transform-object-rest-spread": ^7.22.15 - "@babel/plugin-transform-object-super": ^7.22.5 - "@babel/plugin-transform-optional-catch-binding": ^7.22.11 - "@babel/plugin-transform-optional-chaining": ^7.23.0 - "@babel/plugin-transform-parameters": ^7.22.15 - "@babel/plugin-transform-private-methods": ^7.22.5 - "@babel/plugin-transform-private-property-in-object": ^7.22.11 - "@babel/plugin-transform-property-literals": ^7.22.5 - "@babel/plugin-transform-regenerator": ^7.22.10 - "@babel/plugin-transform-reserved-words": ^7.22.5 - "@babel/plugin-transform-shorthand-properties": ^7.22.5 - "@babel/plugin-transform-spread": ^7.22.5 - "@babel/plugin-transform-sticky-regex": ^7.22.5 - "@babel/plugin-transform-template-literals": ^7.22.5 - "@babel/plugin-transform-typeof-symbol": ^7.22.5 - "@babel/plugin-transform-unicode-escapes": ^7.22.10 - "@babel/plugin-transform-unicode-property-regex": ^7.22.5 - "@babel/plugin-transform-unicode-regex": ^7.22.5 - "@babel/plugin-transform-unicode-sets-regex": ^7.22.5 + "@babel/plugin-transform-arrow-functions": ^7.24.7 + "@babel/plugin-transform-async-generator-functions": ^7.24.7 + "@babel/plugin-transform-async-to-generator": ^7.24.7 + "@babel/plugin-transform-block-scoped-functions": ^7.24.7 + "@babel/plugin-transform-block-scoping": ^7.24.7 + "@babel/plugin-transform-class-properties": ^7.24.7 + "@babel/plugin-transform-class-static-block": ^7.24.7 + "@babel/plugin-transform-classes": ^7.24.7 + "@babel/plugin-transform-computed-properties": ^7.24.7 + "@babel/plugin-transform-destructuring": ^7.24.7 + "@babel/plugin-transform-dotall-regex": ^7.24.7 + "@babel/plugin-transform-duplicate-keys": ^7.24.7 + "@babel/plugin-transform-dynamic-import": ^7.24.7 + "@babel/plugin-transform-exponentiation-operator": ^7.24.7 + "@babel/plugin-transform-export-namespace-from": ^7.24.7 + "@babel/plugin-transform-for-of": ^7.24.7 + "@babel/plugin-transform-function-name": ^7.24.7 + "@babel/plugin-transform-json-strings": ^7.24.7 + "@babel/plugin-transform-literals": ^7.24.7 + "@babel/plugin-transform-logical-assignment-operators": ^7.24.7 + "@babel/plugin-transform-member-expression-literals": ^7.24.7 + "@babel/plugin-transform-modules-amd": ^7.24.7 + "@babel/plugin-transform-modules-commonjs": ^7.24.7 + "@babel/plugin-transform-modules-systemjs": ^7.24.7 + "@babel/plugin-transform-modules-umd": ^7.24.7 + "@babel/plugin-transform-named-capturing-groups-regex": ^7.24.7 + "@babel/plugin-transform-new-target": ^7.24.7 + "@babel/plugin-transform-nullish-coalescing-operator": ^7.24.7 + "@babel/plugin-transform-numeric-separator": ^7.24.7 + "@babel/plugin-transform-object-rest-spread": ^7.24.7 + "@babel/plugin-transform-object-super": ^7.24.7 + "@babel/plugin-transform-optional-catch-binding": ^7.24.7 + "@babel/plugin-transform-optional-chaining": ^7.24.7 + "@babel/plugin-transform-parameters": ^7.24.7 + "@babel/plugin-transform-private-methods": ^7.24.7 + "@babel/plugin-transform-private-property-in-object": ^7.24.7 + "@babel/plugin-transform-property-literals": ^7.24.7 + "@babel/plugin-transform-regenerator": ^7.24.7 + "@babel/plugin-transform-reserved-words": ^7.24.7 + "@babel/plugin-transform-shorthand-properties": ^7.24.7 + "@babel/plugin-transform-spread": ^7.24.7 + "@babel/plugin-transform-sticky-regex": ^7.24.7 + "@babel/plugin-transform-template-literals": ^7.24.7 + "@babel/plugin-transform-typeof-symbol": ^7.24.7 + "@babel/plugin-transform-unicode-escapes": ^7.24.7 + "@babel/plugin-transform-unicode-property-regex": ^7.24.7 + "@babel/plugin-transform-unicode-regex": ^7.24.7 + "@babel/plugin-transform-unicode-sets-regex": ^7.24.7 "@babel/preset-modules": 0.1.6-no-external-plugins - "@babel/types": ^7.23.0 - babel-plugin-polyfill-corejs2: ^0.4.6 - babel-plugin-polyfill-corejs3: ^0.8.5 - babel-plugin-polyfill-regenerator: ^0.5.3 + babel-plugin-polyfill-corejs2: ^0.4.10 + babel-plugin-polyfill-corejs3: ^0.10.4 + babel-plugin-polyfill-regenerator: ^0.6.1 core-js-compat: ^3.31.0 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 49327ef584b529b56aedd6577937b80c0d89603c68b23795495a13af04b5aa008db9ad04cd280423600cdc0d3cce13ae9d0d9a977db5c8193697b20ced8a10b2 + checksum: 1a82c883c7404359b19b7436d0aab05f8dd4e89e8b1f7de127cc65d0ff6a9b1c345211d9c038f5b6e8f93d26f091fa9c73812d82851026ab4ec93f5ed0f0d675 + languageName: node + linkType: hard + +"@babel/preset-flow@npm:^7.22.15": + version: 7.24.7 + resolution: "@babel/preset-flow@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-validator-option": ^7.24.7 + "@babel/plugin-transform-flow-strip-types": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4caca02a6e0a477eb22994d686a1fbf65b5ab0240ae77530696434dba7efff4c5dcbf9186a774168dd4c492423141a22af3f2874c356aa22429f3c83eaf34419 languageName: node linkType: hard @@ -1356,18 +1481,33 @@ __metadata: languageName: node linkType: hard -"@babel/preset-typescript@npm:^7.23.2": - version: 7.23.2 - resolution: "@babel/preset-typescript@npm:7.23.2" +"@babel/preset-typescript@npm:^7.23.0, @babel/preset-typescript@npm:^7.23.2": + version: 7.24.7 + resolution: "@babel/preset-typescript@npm:7.24.7" dependencies: - "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-validator-option": ^7.22.15 - "@babel/plugin-syntax-jsx": ^7.22.5 - "@babel/plugin-transform-modules-commonjs": ^7.23.0 - "@babel/plugin-transform-typescript": ^7.22.15 + "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-validator-option": ^7.24.7 + "@babel/plugin-syntax-jsx": ^7.24.7 + "@babel/plugin-transform-modules-commonjs": ^7.24.7 + "@babel/plugin-transform-typescript": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 12929b24757f3bd6548103475f86478eda4c872bc7cefd920b29591eee8f4a4f350561d888e133d632d0c9402b8615fdcec9138e5127a6567dcb22f804ff207f + languageName: node + linkType: hard + +"@babel/register@npm:^7.22.15": + version: 7.24.6 + resolution: "@babel/register@npm:7.24.6" + dependencies: + clone-deep: ^4.0.1 + find-cache-dir: ^2.0.0 + make-dir: ^2.1.0 + pirates: ^4.0.6 + source-map-support: ^0.5.16 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c4b065c90e7f085dd7a0e57032983ac230c7ffd1d616e4c2b66581e765d5befc9271495f33250bf1cf9b4d436239c8ca3b19ada9f6c419c70bdab2cf6c868f9f + checksum: 446316c80969df89ad3515576937ddf746cd4927810f226101a8d7f476b399c14c26847e77637e09355399c645fbf413d6e53ac6987b8cf240de7932a9372cb5 languageName: node linkType: hard @@ -1378,27 +1518,27 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.22.5 - resolution: "@babel/runtime@npm:7.22.5" +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": + version: 7.24.7 + resolution: "@babel/runtime@npm:7.24.7" dependencies: - regenerator-runtime: ^0.13.11 - checksum: 12a50b7de2531beef38840d17af50c55a094253697600cee255311222390c68eed704829308d4fd305e1b3dfbce113272e428e9d9d45b1730e0fede997eaceb1 + regenerator-runtime: ^0.14.0 + checksum: d17f29eed6f848ac15cdf4202a910b741facfb0419a9d79e5c7fa37df6362fc3227f1cc2e248cc6db5e53ddffb4caa6686c488e6e80ce3d29c36a4e74c8734ea languageName: node linkType: hard -"@babel/template@npm:^7.22.15, @babel/template@npm:^7.22.5, @babel/template@npm:^7.3.3": - version: 7.22.15 - resolution: "@babel/template@npm:7.22.15" +"@babel/template@npm:^7.22.15, @babel/template@npm:^7.24.7, @babel/template@npm:^7.3.3": + version: 7.24.7 + resolution: "@babel/template@npm:7.24.7" dependencies: - "@babel/code-frame": ^7.22.13 - "@babel/parser": ^7.22.15 - "@babel/types": ^7.22.15 - checksum: 1f3e7dcd6c44f5904c184b3f7fe280394b191f2fed819919ffa1e529c259d5b197da8981b6ca491c235aee8dbad4a50b7e31304aa531271cb823a4a24a0dd8fd + "@babel/code-frame": ^7.24.7 + "@babel/parser": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: ea90792fae708ddf1632e54c25fe1a86643d8c0132311f81265d2bdbdd42f9f4fac65457056c1b6ca87f7aa0d6a795b549566774bba064bdcea2034ab3960ee9 languageName: node linkType: hard -"@babel/traverse@npm:7.23.9, @babel/traverse@npm:^7.23.2, @babel/traverse@npm:^7.7.2": +"@babel/traverse@npm:7.23.9": version: 7.23.9 resolution: "@babel/traverse@npm:7.23.9" dependencies: @@ -1416,7 +1556,25 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:7.23.9, @babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.6, @babel/types@npm:^7.23.9, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": +"@babel/traverse@npm:^7.23.2, @babel/traverse@npm:^7.24.1, @babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.7.2": + version: 7.24.7 + resolution: "@babel/traverse@npm:7.24.7" + dependencies: + "@babel/code-frame": ^7.24.7 + "@babel/generator": ^7.24.7 + "@babel/helper-environment-visitor": ^7.24.7 + "@babel/helper-function-name": ^7.24.7 + "@babel/helper-hoist-variables": ^7.24.7 + "@babel/helper-split-export-declaration": ^7.24.7 + "@babel/parser": ^7.24.7 + "@babel/types": ^7.24.7 + debug: ^4.3.1 + globals: ^11.1.0 + checksum: 7cd366afe9e7ee77e493779fdf24f67bf5595247289364f4689e29688572505eaeb886d7a8f20ebb9c29fc2de7d0895e4ff9e203e78e39ac67239724d45aa83b + languageName: node + linkType: hard + +"@babel/types@npm:7.23.9": version: 7.23.9 resolution: "@babel/types@npm:7.23.9" dependencies: @@ -1427,6 +1585,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.9, @babel/types@npm:^7.24.0, @babel/types@npm:^7.24.7, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": + version: 7.24.7 + resolution: "@babel/types@npm:7.24.7" + dependencies: + "@babel/helper-string-parser": ^7.24.7 + "@babel/helper-validator-identifier": ^7.24.7 + to-fast-properties: ^2.0.0 + checksum: 3e4437fced97e02982972ce5bebd318c47d42c9be2152c0fd28c6f786cc74086cc0a8fb83b602b846e41df37f22c36254338eada1a47ef9d8a1ec92332ca3ea8 + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -1468,13 +1637,20 @@ __metadata: languageName: node linkType: hard -"@chakra-ui/anatomy@npm:2.1.2, @chakra-ui/anatomy@npm:^2.1.1": +"@chakra-ui/anatomy@npm:2.1.2": version: 2.1.2 resolution: "@chakra-ui/anatomy@npm:2.1.2" checksum: 87519672ae028ef3af44ecc7d87fa18dc7ec8d46958a3490cb312ebc6b857bc227e908ffe0b12eb1e2a11c860656c38c3160ebc20bf1e9522b0ae0ef7b31e28d languageName: node linkType: hard +"@chakra-ui/anatomy@npm:2.2.2, @chakra-ui/anatomy@npm:^2.1.1": + version: 2.2.2 + resolution: "@chakra-ui/anatomy@npm:2.2.2" + checksum: 0f760fae4a145305ef20bbff119bfbc92a54a477cd0916450dc4f88923e00856b582392ff35cfad93ee7cc9ab59a60fecbc9dd8bab9287bdd9cbe6d87031bce1 + languageName: node + linkType: hard + "@chakra-ui/avatar@npm:2.2.10": version: 2.2.10 resolution: "@chakra-ui/avatar@npm:2.2.10" @@ -2513,6 +2689,19 @@ __metadata: languageName: node linkType: hard +"@chakra-ui/theme-tools@npm:^2.1.2": + version: 2.1.2 + resolution: "@chakra-ui/theme-tools@npm:2.1.2" + dependencies: + "@chakra-ui/anatomy": 2.2.2 + "@chakra-ui/shared-utils": 2.0.5 + color2k: ^2.0.2 + peerDependencies: + "@chakra-ui/styled-system": ">=2.0.0" + checksum: aa628824a9485d7bc28b468f7395b1ebfd2fee88e656b9d9626f4521c0f9b28bba656db1f5b74c34ae7ce2dc6d25d1789b3e227dd1fd2d36c230f8a97330e529 + languageName: node + linkType: hard + "@chakra-ui/theme-utils@npm:2.0.17": version: 2.0.17 resolution: "@chakra-ui/theme-utils@npm:2.0.17" @@ -2592,7 +2781,7 @@ __metadata: languageName: node linkType: hard -"@chakra-ui/utils@npm:2.0.15": +"@chakra-ui/utils@npm:2.0.15, @chakra-ui/utils@npm:^2.0.15": version: 2.0.15 resolution: "@chakra-ui/utils@npm:2.0.15" dependencies: @@ -2614,6 +2803,13 @@ __metadata: languageName: node linkType: hard +"@colors/colors@npm:1.5.0": + version: 1.5.0 + resolution: "@colors/colors@npm:1.5.0" + checksum: d64d5260bed1d5012ae3fc617d38d1afc0329fec05342f4e6b838f46998855ba56e0a73833f4a80fa8378c84810da254f76a8a19c39d038260dc06dc4e007425 + languageName: node + linkType: hard + "@cspotcode/source-map-support@npm:^0.8.0": version: 0.8.1 resolution: "@cspotcode/source-map-support@npm:0.8.1" @@ -2623,10 +2819,10 @@ __metadata: languageName: node linkType: hard -"@discoveryjs/json-ext@npm:^0.5.0": - version: 0.5.6 - resolution: "@discoveryjs/json-ext@npm:0.5.6" - checksum: e97df618511fb202dffa2eb0d23e17dfb02943a70e5bc38f6b9603ad1cb1d6b525aa2b07ff9fb00b041abe425b341146ddd9e487f1e35ddadc8c6b8c56358ae0 +"@discoveryjs/json-ext@npm:^0.5.0, @discoveryjs/json-ext@npm:^0.5.3": + version: 0.5.7 + resolution: "@discoveryjs/json-ext@npm:0.5.7" + checksum: 2176d301cc258ea5c2324402997cf8134ebb212469c0d397591636cea8d3c02f2b3cf9fd58dcb748c7a0dade77ebdc1b10284fa63e608c033a1db52fddc69918 languageName: node linkType: hard @@ -2850,6 +3046,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/aix-ppc64@npm:0.20.2" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/android-arm64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/android-arm64@npm:0.18.20" @@ -2864,6 +3067,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/android-arm64@npm:0.20.2" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/android-arm@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/android-arm@npm:0.18.20" @@ -2878,6 +3088,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/android-arm@npm:0.20.2" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@esbuild/android-x64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/android-x64@npm:0.18.20" @@ -2892,6 +3109,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/android-x64@npm:0.20.2" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + "@esbuild/darwin-arm64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/darwin-arm64@npm:0.18.20" @@ -2906,6 +3130,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-arm64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/darwin-arm64@npm:0.20.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/darwin-x64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/darwin-x64@npm:0.18.20" @@ -2920,6 +3151,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/darwin-x64@npm:0.20.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@esbuild/freebsd-arm64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/freebsd-arm64@npm:0.18.20" @@ -2934,6 +3172,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-arm64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/freebsd-arm64@npm:0.20.2" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/freebsd-x64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/freebsd-x64@npm:0.18.20" @@ -2948,6 +3193,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/freebsd-x64@npm:0.20.2" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/linux-arm64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/linux-arm64@npm:0.18.20" @@ -2962,6 +3214,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-arm64@npm:0.20.2" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/linux-arm@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/linux-arm@npm:0.18.20" @@ -2976,6 +3235,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-arm@npm:0.20.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@esbuild/linux-ia32@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/linux-ia32@npm:0.18.20" @@ -2990,6 +3256,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ia32@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-ia32@npm:0.20.2" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/linux-loong64@npm:0.14.54": version: 0.14.54 resolution: "@esbuild/linux-loong64@npm:0.14.54" @@ -3011,9 +3284,16 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-mips64el@npm:0.18.20" +"@esbuild/linux-loong64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-loong64@npm:0.20.2" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/linux-mips64el@npm:0.18.20" conditions: os=linux & cpu=mips64el languageName: node linkType: hard @@ -3025,6 +3305,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-mips64el@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-mips64el@npm:0.20.2" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + "@esbuild/linux-ppc64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/linux-ppc64@npm:0.18.20" @@ -3039,6 +3326,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ppc64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-ppc64@npm:0.20.2" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/linux-riscv64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/linux-riscv64@npm:0.18.20" @@ -3053,6 +3347,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-riscv64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-riscv64@npm:0.20.2" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + "@esbuild/linux-s390x@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/linux-s390x@npm:0.18.20" @@ -3067,6 +3368,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-s390x@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-s390x@npm:0.20.2" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + "@esbuild/linux-x64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/linux-x64@npm:0.18.20" @@ -3081,6 +3389,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/linux-x64@npm:0.20.2" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + "@esbuild/netbsd-x64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/netbsd-x64@npm:0.18.20" @@ -3095,6 +3410,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/netbsd-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/netbsd-x64@npm:0.20.2" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/openbsd-x64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/openbsd-x64@npm:0.18.20" @@ -3109,6 +3431,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/openbsd-x64@npm:0.20.2" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/sunos-x64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/sunos-x64@npm:0.18.20" @@ -3123,6 +3452,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/sunos-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/sunos-x64@npm:0.20.2" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + "@esbuild/win32-arm64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/win32-arm64@npm:0.18.20" @@ -3137,6 +3473,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-arm64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/win32-arm64@npm:0.20.2" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/win32-ia32@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/win32-ia32@npm:0.18.20" @@ -3151,6 +3494,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-ia32@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/win32-ia32@npm:0.20.2" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/win32-x64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/win32-x64@npm:0.18.20" @@ -3165,6 +3515,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-x64@npm:0.20.2": + version: 0.20.2 + resolution: "@esbuild/win32-x64@npm:0.20.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^1.3.3": version: 1.3.3 resolution: "@eslint/eslintrc@npm:1.3.3" @@ -3271,6 +3628,13 @@ __metadata: languageName: node linkType: hard +"@fal-works/esbuild-plugin-global-externals@npm:^2.1.2": + version: 2.1.2 + resolution: "@fal-works/esbuild-plugin-global-externals@npm:2.1.2" + checksum: c59715902b9062aa7ff38973f298b509499fd146dbf564dc338b3f9e896da5bffb4ca676c27587fde79b3586003e24d65960acb62f009bca43dca34c76f8cbf7 + languageName: node + linkType: hard + "@gar/promisify@npm:^1.1.3": version: 1.1.3 resolution: "@gar/promisify@npm:1.1.3" @@ -3637,28 +4001,28 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": - version: 0.3.3 - resolution: "@jridgewell/gen-mapping@npm:0.3.3" +"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2, @jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.5 + resolution: "@jridgewell/gen-mapping@npm:0.3.5" dependencies: - "@jridgewell/set-array": ^1.0.1 + "@jridgewell/set-array": ^1.2.1 "@jridgewell/sourcemap-codec": ^1.4.10 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 4a74944bd31f22354fc01c3da32e83c19e519e3bbadafa114f6da4522ea77dd0c2842607e923a591d60a76699d819a2fbb6f3552e277efdb9b58b081390b60ab + "@jridgewell/trace-mapping": ^0.3.24 + checksum: ff7a1764ebd76a5e129c8890aa3e2f46045109dabde62b0b6c6a250152227647178ff2069ea234753a690d8f3c4ac8b5e7b267bbee272bffb7f3b0a370ab6e52 languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:3.1.0, @jridgewell/resolve-uri@npm:^3.0.3": - version: 3.1.0 - resolution: "@jridgewell/resolve-uri@npm:3.1.0" - checksum: b5ceaaf9a110fcb2780d1d8f8d4a0bfd216702f31c988d8042e5f8fbe353c55d9b0f55a1733afdc64806f8e79c485d2464680ac48a0d9fcadb9548ee6b81d267 +"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 83b85f72c59d1c080b4cbec0fef84528963a1b5db34e4370fa4bd1e3ff64a0d80e0cee7369d11d73c704e0286fb2865b530acac7a871088fbe92b5edf1000870 languageName: node linkType: hard -"@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": - version: 1.1.2 - resolution: "@jridgewell/set-array@npm:1.1.2" - checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e +"@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 832e513a85a588f8ed4f27d1279420d8547743cc37fcad5a5a76fc74bb895b013dfe614d0eed9cb860048e6546b798f8f2652020b4b2ba0561b05caa8c654b10 languageName: node linkType: hard @@ -3672,14 +4036,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:1.4.14": - version: 1.4.14 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 61100637b6d173d3ba786a5dff019e1a74b1f394f323c1fee337ff390239f053b87266c7a948777f4b1ee68c01a8ad0ab61e5ff4abb5a012a0b091bec391ab97 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13, @jridgewell/sourcemap-codec@npm:^1.4.15": +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15": version: 1.4.15 resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 @@ -3696,13 +4053,13 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.15, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.17 - resolution: "@jridgewell/trace-mapping@npm:0.3.17" +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.15, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.9": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: - "@jridgewell/resolve-uri": 3.1.0 - "@jridgewell/sourcemap-codec": 1.4.14 - checksum: 9d703b859cff5cd83b7308fd457a431387db5db96bd781a63bf48e183418dd9d3d44e76b9e4ae13237f6abeeb25d739ec9215c1d5bfdd08f66f750a50074a339 + "@jridgewell/resolve-uri": ^3.1.0 + "@jridgewell/sourcemap-codec": ^1.4.14 + checksum: 9d3c40d225e139987b50c48988f8717a54a8c994d8a948ee42e1412e08988761d0754d7d10b803061cc3aebf35f92a5dbbab493bd0e1a9ef9e89a2130e83ba34 languageName: node linkType: hard @@ -3801,6 +4158,18 @@ __metadata: languageName: node linkType: hard +"@mdx-js/react@npm:^3.0.0": + version: 3.0.1 + resolution: "@mdx-js/react@npm:3.0.1" + dependencies: + "@types/mdx": ^2.0.0 + peerDependencies: + "@types/react": ">=16" + react: ">=16" + checksum: 1063a597264f6a8840aa13274a99beef8983a88dd45b0c5b8e48e6216bc23d33e247da8e2d95d6e1874483f8b4e0903b166ce5046874aa7ffa2b1333057dcddf + languageName: node + linkType: hard + "@metamask/abi-utils@npm:^2.0.2": version: 2.0.2 resolution: "@metamask/abi-utils@npm:2.0.2" @@ -4277,6 +4646,13 @@ __metadata: languageName: unknown linkType: soft +"@metamask/design-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "@metamask/design-tokens@npm:4.0.0" + checksum: 519e12da825ae5f8e265fbab1755e2e665ca6efb72ae5693985b35ef577d233c615255faa6b11622b552382e310a368c5c323d9f18fcb308ce28561f65077814 + languageName: node + linkType: hard + "@metamask/dialog-example-snap@workspace:^, @metamask/dialog-example-snap@workspace:packages/examples/packages/dialogs": version: 0.0.0-use.local resolution: "@metamask/dialog-example-snap@workspace:packages/examples/packages/dialogs" @@ -4877,6 +5253,16 @@ __metadata: languageName: unknown linkType: soft +"@metamask/jazzicon@npm:^2.0.0": + version: 2.0.0 + resolution: "@metamask/jazzicon@npm:2.0.0" + dependencies: + color: ^0.11.3 + mersenne-twister: ^1.1.0 + checksum: 0b5add49e8d28270e4f8ca6159aa4ea0848f70cbb1cb217de2b0c13799a45fb27b8a6f0b3f72b6a76cbb55446764f79daf71e7d2a830a14b8e5e54d5e57bf7d1 + languageName: node + linkType: hard + "@metamask/json-rpc-engine@npm:^8.0.1, @metamask/json-rpc-engine@npm:^8.0.2": version: 8.0.2 resolution: "@metamask/json-rpc-engine@npm:8.0.2" @@ -5909,6 +6295,8 @@ __metadata: "@metamask/providers": ^17.0.0 "@metamask/rpc-errors": ^6.2.1 "@metamask/utils": ^8.3.0 + "@storybook/addon-controls": ^8.1.11 + "@storybook/types": ^8.1.11 "@swc/core": 1.3.78 "@types/jest": ^27.5.1 "@typescript-eslint/eslint-plugin": ^5.42.1 @@ -5930,6 +6318,7 @@ __metadata: prettier: ^2.7.1 prettier-plugin-packagejson: ^2.2.11 rimraf: ^4.1.2 + storybook: ^8.1.11 superstruct: ^1.0.3 ts-jest: ^29.1.1 tsup: ^8.0.1 @@ -6048,6 +6437,65 @@ __metadata: languageName: unknown linkType: soft +"@metamask/snaps-storybook@workspace:packages/snaps-storybook": + version: 0.0.0-use.local + resolution: "@metamask/snaps-storybook@workspace:packages/snaps-storybook" + dependencies: + "@babel/generator": ^7.24.7 + "@babel/parser": ^7.24.7 + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.23.0 + "@chakra-ui/anatomy": ^2.1.1 + "@chakra-ui/react": ^2.6.1 + "@chakra-ui/theme-tools": ^2.1.2 + "@chakra-ui/utils": ^2.0.15 + "@emotion/react": ^11.10.8 + "@emotion/styled": ^11.10.8 + "@metamask/auto-changelog": ^3.4.4 + "@metamask/design-tokens": ^4.0.0 + "@metamask/eslint-config": ^12.1.0 + "@metamask/eslint-config-jest": ^12.1.0 + "@metamask/eslint-config-nodejs": ^12.1.0 + "@metamask/eslint-config-typescript": ^12.1.0 + "@metamask/jazzicon": ^2.0.0 + "@metamask/snaps-sdk": "workspace:^" + "@metamask/utils": ^8.3.0 + "@storybook/addon-docs": ^8.1.11 + "@storybook/addon-themes": ^8.1.11 + "@storybook/addon-toolbars": ^8.1.11 + "@storybook/builder-vite": ^8.1.11 + "@storybook/manager-api": ^8.1.11 + "@storybook/react-dom-shim": ^8.1.11 + "@storybook/theming": ^8.1.11 + "@storybook/types": ^8.1.11 + "@typescript-eslint/eslint-plugin": ^5.42.1 + "@typescript-eslint/parser": ^5.42.1 + deepmerge: ^4.2.2 + depcheck: ^1.4.7 + eslint: ^8.27.0 + eslint-config-prettier: ^8.5.0 + eslint-plugin-import: ^2.26.0 + eslint-plugin-jest: ^27.1.5 + eslint-plugin-jsdoc: ^39.6.2 + eslint-plugin-n: ^15.7.0 + eslint-plugin-prettier: ^4.2.1 + eslint-plugin-promise: ^6.1.1 + jest: ^29.0.2 + jest-it-up: ^2.0.0 + prettier: ^2.7.1 + react: ^18.2.0 + react-dom: ^18.2.0 + storybook: ^8.1.11 + ts-jest: ^29.1.1 + tsup: ^8.0.1 + typescript: ~4.8.4 + vite: ^4.3.9 + vite-plugin-node-polyfills: ^0.22.0 + peerDependencies: + storybook: ^8.1.11 + languageName: unknown + linkType: soft + "@metamask/snaps-utils@workspace:^, @metamask/snaps-utils@workspace:packages/snaps-utils": version: 0.0.0-use.local resolution: "@metamask/snaps-utils@workspace:packages/snaps-utils" @@ -6444,6 +6892,17 @@ __metadata: languageName: node linkType: hard +"@ndelangen/get-tarball@npm:^3.0.7": + version: 3.0.9 + resolution: "@ndelangen/get-tarball@npm:3.0.9" + dependencies: + gunzip-maybe: ^1.4.2 + pump: ^3.0.0 + tar-fs: ^2.1.1 + checksum: 7fa8ac40b4e85738a4ee6bf891bc27fce2445b65b4477e0ec86aed0fa62ab18bdf5d193ce04553ad9bfa639e1eef33b8b30da4ef3e7218f12bf95f24c8786e5b + languageName: node + linkType: hard + "@noble/bls12-381@npm:^1.2.0": version: 1.4.0 resolution: "@noble/bls12-381@npm:1.4.0" @@ -6736,6 +7195,273 @@ __metadata: languageName: node linkType: hard +"@radix-ui/primitive@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/primitive@npm:1.1.0" + checksum: 7cbf70bfd4b2200972dbd52a9366801b5a43dd844743dc97eb673b3ec8e64f5dd547538faaf9939abbfe8bb275773767ecf5a87295d90ba09c15cba2b5528c89 + languageName: node + linkType: hard + +"@radix-ui/react-compose-refs@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-compose-refs@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 047a4ed5f87cb848be475507cd62836cf5af5761484681f521ea543ea7c9d59d61d42806d6208863d5e2380bf38cdf4cff73c2bbe5f52dbbe50fb04e1a13ac72 + languageName: node + linkType: hard + +"@radix-ui/react-context@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-context@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: d48df5e5193a1d963a1ff7a58f08497c60ddc364216c59090c8267985bd478447dd617847ea277afe10e67c4e0c528894c8d7407082325e0650038625140558a + languageName: node + linkType: hard + +"@radix-ui/react-dialog@npm:^1.0.5": + version: 1.1.1 + resolution: "@radix-ui/react-dialog@npm:1.1.1" + dependencies: + "@radix-ui/primitive": 1.1.0 + "@radix-ui/react-compose-refs": 1.1.0 + "@radix-ui/react-context": 1.1.0 + "@radix-ui/react-dismissable-layer": 1.1.0 + "@radix-ui/react-focus-guards": 1.1.0 + "@radix-ui/react-focus-scope": 1.1.0 + "@radix-ui/react-id": 1.1.0 + "@radix-ui/react-portal": 1.1.1 + "@radix-ui/react-presence": 1.1.0 + "@radix-ui/react-primitive": 2.0.0 + "@radix-ui/react-slot": 1.1.0 + "@radix-ui/react-use-controllable-state": 1.1.0 + aria-hidden: ^1.1.1 + react-remove-scroll: 2.5.7 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 5f270518b61e0b570a321f1db09ed95939969e9bff71fad02bce02126f047f5305d74ff79bb4e763677062db881b1e4ecd297b1556a917fed3d7a77cc0a7c235 + languageName: node + linkType: hard + +"@radix-ui/react-dismissable-layer@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-dismissable-layer@npm:1.1.0" + dependencies: + "@radix-ui/primitive": 1.1.0 + "@radix-ui/react-compose-refs": 1.1.0 + "@radix-ui/react-primitive": 2.0.0 + "@radix-ui/react-use-callback-ref": 1.1.0 + "@radix-ui/react-use-escape-keydown": 1.1.0 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 857feab2d5184a72df4e6dd9430c8e4b9fe7304790ef69512733346eee5fc33a6527256fc135d4bee6d94e8cc9c1b83c3d91da96cb4bf8300f88e9c660b71b08 + languageName: node + linkType: hard + +"@radix-ui/react-focus-guards@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-focus-guards@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 199717e7da1ba9b3fa74b04f6a245aaebf6bdb8ae7d6f4b5f21f95f4086414a3587beebc77399a99be7d3a4b2499eaa52bf72bef660f8e69856b0fd0593b074f + languageName: node + linkType: hard + +"@radix-ui/react-focus-scope@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-focus-scope@npm:1.1.0" + dependencies: + "@radix-ui/react-compose-refs": 1.1.0 + "@radix-ui/react-primitive": 2.0.0 + "@radix-ui/react-use-callback-ref": 1.1.0 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: bea6c993752780c46c69f0c21a0fd96f11b9ed7edac23deb0953fbd8524d90938bf4c8060ccac7cad14caba3eb493f2642be7f8933910f4b6fa184666b7fcb40 + languageName: node + linkType: hard + +"@radix-ui/react-id@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-id@npm:1.1.0" + dependencies: + "@radix-ui/react-use-layout-effect": 1.1.0 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 6fbc9d1739b3b082412da10359e63967b4f3a60383ebda4c9e56b07a722d29bee53b203b3b1418f88854a29315a7715867133bb149e6e22a027a048cdd20d970 + languageName: node + linkType: hard + +"@radix-ui/react-portal@npm:1.1.1": + version: 1.1.1 + resolution: "@radix-ui/react-portal@npm:1.1.1" + dependencies: + "@radix-ui/react-primitive": 2.0.0 + "@radix-ui/react-use-layout-effect": 1.1.0 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 84dab64ce9c9f4ed7d75df6d1d82877dc7976a98cc192287d39ba2ea512415ed7bf34caf02d579a18fe21766403fa9ae41d2482a14dee5514179ee1b09cc333c + languageName: node + linkType: hard + +"@radix-ui/react-presence@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-presence@npm:1.1.0" + dependencies: + "@radix-ui/react-compose-refs": 1.1.0 + "@radix-ui/react-use-layout-effect": 1.1.0 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 7f482268aa5bb5a4214dcf39d20ad93cac96585f1f248931be897ed8a9f99965b7f9b2e8bd4f4140c64eb243b471c471bf148e107f49578cc582faa773d3e83a + languageName: node + linkType: hard + +"@radix-ui/react-primitive@npm:2.0.0": + version: 2.0.0 + resolution: "@radix-ui/react-primitive@npm:2.0.0" + dependencies: + "@radix-ui/react-slot": 1.1.0 + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + checksum: 04afc0f3a5ccf1de6e4861f755a89f31640d5a07237c5ac5bffe47bcd8fdf318257961fa56fedc823af49281800ee755752a371561c36fd92f008536a0553748 + languageName: node + linkType: hard + +"@radix-ui/react-slot@npm:1.1.0, @radix-ui/react-slot@npm:^1.0.2": + version: 1.1.0 + resolution: "@radix-ui/react-slot@npm:1.1.0" + dependencies: + "@radix-ui/react-compose-refs": 1.1.0 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 3c9cd90aabf08f541e20dbecb581744be01c552a0cd16e90d7c218381bcc5307aa8a6013d045864e692ba89d3d8c17bfae08df18ed18be6d223d9330ab0302fa + languageName: node + linkType: hard + +"@radix-ui/react-use-callback-ref@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-callback-ref@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 2ec7903c67e3034b646005556f44fd975dc5204db6885fc58403e3584f27d95f0b573bc161de3d14fab9fda25150bf3b91f718d299fdfc701c736bd0bd2281fa + languageName: node + linkType: hard + +"@radix-ui/react-use-controllable-state@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-controllable-state@npm:1.1.0" + dependencies: + "@radix-ui/react-use-callback-ref": 1.1.0 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: a6c167cf8eb0744effbeab1f92ea6c0ad71838b222670c0488599f28eecd941d87ac1eed4b5d3b10df6dc7b7b2edb88a54e99d92c2942ce3b21f81d5c188f32d + languageName: node + linkType: hard + +"@radix-ui/react-use-escape-keydown@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-escape-keydown@npm:1.1.0" + dependencies: + "@radix-ui/react-use-callback-ref": 1.1.0 + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 9bf88ea272b32ea0f292afd336780a59c5646f795036b7e6105df2d224d73c54399ee5265f61d571eb545d28382491a8b02dc436e3088de8dae415d58b959b71 + languageName: node + linkType: hard + +"@radix-ui/react-use-layout-effect@npm:1.1.0": + version: 1.1.0 + resolution: "@radix-ui/react-use-layout-effect@npm:1.1.0" + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + "@types/react": + optional: true + checksum: 271ea0bf1cd74718895a68414a6e95537737f36e02ad08eeb61a82b229d6abda9cff3135a479e134e1f0ce2c3ff97bb85babbdce751985fb755a39b231d7ccf2 + languageName: node + linkType: hard + "@react-aria/ssr@npm:^3.5.0": version: 3.7.0 resolution: "@react-aria/ssr@npm:3.7.0" @@ -6920,6 +7646,22 @@ __metadata: languageName: node linkType: hard +"@rollup/plugin-inject@npm:^5.0.5": + version: 5.0.5 + resolution: "@rollup/plugin-inject@npm:5.0.5" + dependencies: + "@rollup/pluginutils": ^5.0.1 + estree-walker: ^2.0.2 + magic-string: ^0.30.3 + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 22cb772fd6f7178308b2ece95cdde5f8615f6257197832166294552a7e4c0d3976dc996cbfa6470af3151d8b86c00091aa93da5f4db6ec563f11b6db29fd1b63 + languageName: node + linkType: hard + "@rollup/plugin-node-resolve@npm:^15.1.0": version: 15.1.0 resolution: "@rollup/plugin-node-resolve@npm:15.1.0" @@ -7125,33 +7867,623 @@ __metadata: languageName: node linkType: hard -"@sinonjs/commons@npm:^3.0.0": - version: 3.0.0 - resolution: "@sinonjs/commons@npm:3.0.0" +"@sindresorhus/merge-streams@npm:^2.1.0": + version: 2.3.0 + resolution: "@sindresorhus/merge-streams@npm:2.3.0" + checksum: e989d53dee68d7e49b4ac02ae49178d561c461144cea83f66fa91ff012d981ad0ad2340cbd13f2fdb57989197f5c987ca22a74eb56478626f04e79df84291159 + languageName: node + linkType: hard + +"@sinonjs/commons@npm:^3.0.0": + version: 3.0.0 + resolution: "@sinonjs/commons@npm:3.0.0" + dependencies: + type-detect: 4.0.8 + checksum: b4b5b73d4df4560fb8c0c7b38c7ad4aeabedd362f3373859d804c988c725889cde33550e4bcc7cd316a30f5152a2d1d43db71b6d0c38f5feef71fd8d016763f8 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^10.0.2": + version: 10.2.0 + resolution: "@sinonjs/fake-timers@npm:10.2.0" + dependencies: + "@sinonjs/commons": ^3.0.0 + checksum: 586c76e1dd90d03b0c4e754f2011325b38ac6055878c81c52434c900f36d9d245438c96ef69e08e28d9fbecf2335fb347b67850962d8b6e539dd7359d8c62802 + languageName: node + linkType: hard + +"@spruceid/siwe-parser@npm:2.1.0": + version: 2.1.0 + resolution: "@spruceid/siwe-parser@npm:2.1.0" + dependencies: + "@noble/hashes": ^1.1.2 + apg-js: ^4.1.1 + uri-js: ^4.4.1 + valid-url: ^1.0.9 + checksum: 99365956bd5e35127568e7ee69246cfc79cc26d83f6fbc5e3a9ed6f0693f7da6f2ee67cf8b93b65761da3c3ce8cc156858bab85e24b2eadd49ec8ae07cb8826e + languageName: node + linkType: hard + +"@storybook/addon-controls@npm:^8.1.11": + version: 8.1.11 + resolution: "@storybook/addon-controls@npm:8.1.11" + dependencies: + "@storybook/blocks": 8.1.11 + dequal: ^2.0.2 + lodash: ^4.17.21 + ts-dedent: ^2.0.0 + checksum: 30ab59fc333c7d715196a817f2e0ed911899771453a24e42c33604949207a5ab7b8abb5574006cb3159ed07accebe37b1f797c06c3fa3339f46f73f4013baa3a + languageName: node + linkType: hard + +"@storybook/addon-docs@npm:^8.1.11": + version: 8.1.11 + resolution: "@storybook/addon-docs@npm:8.1.11" + dependencies: + "@babel/core": ^7.24.4 + "@mdx-js/react": ^3.0.0 + "@storybook/blocks": 8.1.11 + "@storybook/client-logger": 8.1.11 + "@storybook/components": 8.1.11 + "@storybook/csf-plugin": 8.1.11 + "@storybook/csf-tools": 8.1.11 + "@storybook/global": ^5.0.0 + "@storybook/node-logger": 8.1.11 + "@storybook/preview-api": 8.1.11 + "@storybook/react-dom-shim": 8.1.11 + "@storybook/theming": 8.1.11 + "@storybook/types": 8.1.11 + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + fs-extra: ^11.1.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + rehype-external-links: ^3.0.0 + rehype-slug: ^6.0.0 + ts-dedent: ^2.0.0 + checksum: 045de28fec454e2fa6dda826ccb1a02c3d463c59704824e69083c108838dc21d298a7c4a4d8ae7d9d673e8c12c60e3fbec045a70d5b8037c3ee7a7626a1830f4 + languageName: node + linkType: hard + +"@storybook/addon-themes@npm:^8.1.11": + version: 8.1.11 + resolution: "@storybook/addon-themes@npm:8.1.11" + dependencies: + ts-dedent: ^2.0.0 + checksum: 829af7e7c722ce8e4c7a34339dbbcb8304377101975227004fc9a70c46cf4d5961d9eeef8ddcbec5a7cfeda52eb3db1f4cb20c20dc93e210e3e42db1462a9670 + languageName: node + linkType: hard + +"@storybook/addon-toolbars@npm:^8.1.11": + version: 8.1.11 + resolution: "@storybook/addon-toolbars@npm:8.1.11" + checksum: 0c837aae6a99058a1585db8ec68cfae7f87de0b1cafcc7bcf54e1926f1b6de86205ae0b2b707783e7773098c437848be1841f7c9fb107199b1438517e22ed26e + languageName: node + linkType: hard + +"@storybook/blocks@npm:8.1.11": + version: 8.1.11 + resolution: "@storybook/blocks@npm:8.1.11" + dependencies: + "@storybook/channels": 8.1.11 + "@storybook/client-logger": 8.1.11 + "@storybook/components": 8.1.11 + "@storybook/core-events": 8.1.11 + "@storybook/csf": ^0.1.7 + "@storybook/docs-tools": 8.1.11 + "@storybook/global": ^5.0.0 + "@storybook/icons": ^1.2.5 + "@storybook/manager-api": 8.1.11 + "@storybook/preview-api": 8.1.11 + "@storybook/theming": 8.1.11 + "@storybook/types": 8.1.11 + "@types/lodash": ^4.14.167 + color-convert: ^2.0.1 + dequal: ^2.0.2 + lodash: ^4.17.21 + markdown-to-jsx: 7.3.2 + memoizerific: ^1.11.3 + polished: ^4.2.2 + react-colorful: ^5.1.2 + telejson: ^7.2.0 + tocbot: ^4.20.1 + ts-dedent: ^2.0.0 + util-deprecate: ^1.0.2 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + checksum: f5ae54dcea624f515c973f066818964871b93f8e6a77c9286058b08bfda5286cc08ea69abf6e52111e1d382f54d6488df724cac093baa8ded13a1f7aa014d9a8 + languageName: node + linkType: hard + +"@storybook/builder-manager@npm:8.1.11": + version: 8.1.11 + resolution: "@storybook/builder-manager@npm:8.1.11" + dependencies: + "@fal-works/esbuild-plugin-global-externals": ^2.1.2 + "@storybook/core-common": 8.1.11 + "@storybook/manager": 8.1.11 + "@storybook/node-logger": 8.1.11 + "@types/ejs": ^3.1.1 + "@yarnpkg/esbuild-plugin-pnp": ^3.0.0-rc.10 + browser-assert: ^1.2.1 + ejs: ^3.1.10 + esbuild: ^0.18.0 || ^0.19.0 || ^0.20.0 + esbuild-plugin-alias: ^0.2.1 + express: ^4.17.3 + fs-extra: ^11.1.0 + process: ^0.11.10 + util: ^0.12.4 + checksum: 2dceef509c3f8650b56d28709535148bc21bc661f2f2f8bcef8458d80b36c737108baa32733a3084937e6a53b20dc6a200038080c3aac59012a29f4b0fe29f8e + languageName: node + linkType: hard + +"@storybook/builder-vite@npm:^8.1.11": + version: 8.1.11 + resolution: "@storybook/builder-vite@npm:8.1.11" + dependencies: + "@storybook/channels": 8.1.11 + "@storybook/client-logger": 8.1.11 + "@storybook/core-common": 8.1.11 + "@storybook/core-events": 8.1.11 + "@storybook/csf-plugin": 8.1.11 + "@storybook/node-logger": 8.1.11 + "@storybook/preview": 8.1.11 + "@storybook/preview-api": 8.1.11 + "@storybook/types": 8.1.11 + "@types/find-cache-dir": ^3.2.1 + browser-assert: ^1.2.1 + es-module-lexer: ^1.5.0 + express: ^4.17.3 + find-cache-dir: ^3.0.0 + fs-extra: ^11.1.0 + magic-string: ^0.30.0 + ts-dedent: ^2.0.0 + peerDependencies: + "@preact/preset-vite": "*" + typescript: ">= 4.3.x" + vite: ^4.0.0 || ^5.0.0 + vite-plugin-glimmerx: "*" + peerDependenciesMeta: + "@preact/preset-vite": + optional: true + typescript: + optional: true + vite-plugin-glimmerx: + optional: true + checksum: 72fcc273a2aee7076e83f83808a07bee0a24ea8bbf7ea48cd3dec506311bb0e4c254a9b28114b519af3df7807d2f76a8d939bb4acd9d4e46aec656661595b8e2 + languageName: node + linkType: hard + +"@storybook/channels@npm:8.1.11": + version: 8.1.11 + resolution: "@storybook/channels@npm:8.1.11" + dependencies: + "@storybook/client-logger": 8.1.11 + "@storybook/core-events": 8.1.11 + "@storybook/global": ^5.0.0 + telejson: ^7.2.0 + tiny-invariant: ^1.3.1 + checksum: 9f4840c8f6737fe1357344400d0fd6ab85dbff4f3b3329e02dea9ebaa003f20c5a45711074aadcfc82f7e8976466196935def308e0f389c11d5bad48ab3362e5 + languageName: node + linkType: hard + +"@storybook/cli@npm:8.1.11": + version: 8.1.11 + resolution: "@storybook/cli@npm:8.1.11" + dependencies: + "@babel/core": ^7.24.4 + "@babel/types": ^7.24.0 + "@ndelangen/get-tarball": ^3.0.7 + "@storybook/codemod": 8.1.11 + "@storybook/core-common": 8.1.11 + "@storybook/core-events": 8.1.11 + "@storybook/core-server": 8.1.11 + "@storybook/csf-tools": 8.1.11 + "@storybook/node-logger": 8.1.11 + "@storybook/telemetry": 8.1.11 + "@storybook/types": 8.1.11 + "@types/semver": ^7.3.4 + "@yarnpkg/fslib": 2.10.3 + "@yarnpkg/libzip": 2.3.0 + chalk: ^4.1.0 + commander: ^6.2.1 + cross-spawn: ^7.0.3 + detect-indent: ^6.1.0 + envinfo: ^7.7.3 + execa: ^5.0.0 + find-up: ^5.0.0 + fs-extra: ^11.1.0 + get-npm-tarball-url: ^2.0.3 + giget: ^1.0.0 + globby: ^14.0.1 + jscodeshift: ^0.15.1 + leven: ^3.1.0 + ora: ^5.4.1 + prettier: ^3.1.1 + prompts: ^2.4.0 + read-pkg-up: ^7.0.1 + semver: ^7.3.7 + strip-json-comments: ^3.0.1 + tempy: ^3.1.0 + tiny-invariant: ^1.3.1 + ts-dedent: ^2.0.0 + bin: + getstorybook: ./bin/index.js + sb: ./bin/index.js + checksum: 8ef6b3f25b954b7626ca216a69b72a3481f9e068777f887fd6fa4e32d60756baf490d64112f6d64b78939a82dd88bc80f5aaab1a6d6b87ddf9c977641b1f8e4e + languageName: node + linkType: hard + +"@storybook/client-logger@npm:8.1.11": + version: 8.1.11 + resolution: "@storybook/client-logger@npm:8.1.11" + dependencies: + "@storybook/global": ^5.0.0 + checksum: c1dac97b3bd138daed0018825ca7b36d1dff108c9c5134182b4b1bbad633b627436da7c7d557c4d5ecd9e78ccda0b2ce74d22bf8b7e59b30efe799eea05b7a15 + languageName: node + linkType: hard + +"@storybook/codemod@npm:8.1.11": + version: 8.1.11 + resolution: "@storybook/codemod@npm:8.1.11" + dependencies: + "@babel/core": ^7.24.4 + "@babel/preset-env": ^7.24.4 + "@babel/types": ^7.24.0 + "@storybook/csf": ^0.1.7 + "@storybook/csf-tools": 8.1.11 + "@storybook/node-logger": 8.1.11 + "@storybook/types": 8.1.11 + "@types/cross-spawn": ^6.0.2 + cross-spawn: ^7.0.3 + globby: ^14.0.1 + jscodeshift: ^0.15.1 + lodash: ^4.17.21 + prettier: ^3.1.1 + recast: ^0.23.5 + tiny-invariant: ^1.3.1 + checksum: 50cd142e0cf8eef38846505218007cc9d9d0146321e69c0a68a6e9bb69a751bddbc5b5ae66c658cd3740f0220fae3cb4e9af79bd00095873312ee6195c021238 + languageName: node + linkType: hard + +"@storybook/components@npm:8.1.11": + version: 8.1.11 + resolution: "@storybook/components@npm:8.1.11" + dependencies: + "@radix-ui/react-dialog": ^1.0.5 + "@radix-ui/react-slot": ^1.0.2 + "@storybook/client-logger": 8.1.11 + "@storybook/csf": ^0.1.7 + "@storybook/global": ^5.0.0 + "@storybook/icons": ^1.2.5 + "@storybook/theming": 8.1.11 + "@storybook/types": 8.1.11 + memoizerific: ^1.11.3 + util-deprecate: ^1.0.2 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + checksum: d3a3ea535bdd2e59e4ce6f86dfec974d20cdb113e9656394c0b8495625c23f2921539d4d27a1877ec4af675fededa0292ff91bab69620997b39302b145b814ef + languageName: node + linkType: hard + +"@storybook/core-common@npm:8.1.11": + version: 8.1.11 + resolution: "@storybook/core-common@npm:8.1.11" + dependencies: + "@storybook/core-events": 8.1.11 + "@storybook/csf-tools": 8.1.11 + "@storybook/node-logger": 8.1.11 + "@storybook/types": 8.1.11 + "@yarnpkg/fslib": 2.10.3 + "@yarnpkg/libzip": 2.3.0 + chalk: ^4.1.0 + cross-spawn: ^7.0.3 + esbuild: ^0.18.0 || ^0.19.0 || ^0.20.0 + esbuild-register: ^3.5.0 + execa: ^5.0.0 + file-system-cache: 2.3.0 + find-cache-dir: ^3.0.0 + find-up: ^5.0.0 + fs-extra: ^11.1.0 + glob: ^10.0.0 + handlebars: ^4.7.7 + lazy-universal-dotenv: ^4.0.0 + node-fetch: ^2.0.0 + picomatch: ^2.3.0 + pkg-dir: ^5.0.0 + prettier-fallback: "npm:prettier@^3" + pretty-hrtime: ^1.0.3 + resolve-from: ^5.0.0 + semver: ^7.3.7 + tempy: ^3.1.0 + tiny-invariant: ^1.3.1 + ts-dedent: ^2.0.0 + util: ^0.12.4 + peerDependencies: + prettier: ^2 || ^3 + peerDependenciesMeta: + prettier: + optional: true + checksum: a404dda8784319a1e00cc02e0855a27e8da28ae2fbf07b9b066651477e048c577548a08622875afea3d35f74ff87b5ba38f7d5ecf81e9b5c282501c69859903e + languageName: node + linkType: hard + +"@storybook/core-events@npm:8.1.11": + version: 8.1.11 + resolution: "@storybook/core-events@npm:8.1.11" + dependencies: + "@storybook/csf": ^0.1.7 + ts-dedent: ^2.0.0 + checksum: 3b3231b299367def8d6d9ee8dc939ad145473bbd561d495f0dac3e5cd3adb93b7e87f1d0a6787917275f8dfae8193959c872336530930ad90207b6df5de37910 + languageName: node + linkType: hard + +"@storybook/core-server@npm:8.1.11": + version: 8.1.11 + resolution: "@storybook/core-server@npm:8.1.11" + dependencies: + "@aw-web-design/x-default-browser": 1.4.126 + "@babel/core": ^7.24.4 + "@babel/parser": ^7.24.4 + "@discoveryjs/json-ext": ^0.5.3 + "@storybook/builder-manager": 8.1.11 + "@storybook/channels": 8.1.11 + "@storybook/core-common": 8.1.11 + "@storybook/core-events": 8.1.11 + "@storybook/csf": ^0.1.7 + "@storybook/csf-tools": 8.1.11 + "@storybook/docs-mdx": 3.1.0-next.0 + "@storybook/global": ^5.0.0 + "@storybook/manager": 8.1.11 + "@storybook/manager-api": 8.1.11 + "@storybook/node-logger": 8.1.11 + "@storybook/preview-api": 8.1.11 + "@storybook/telemetry": 8.1.11 + "@storybook/types": 8.1.11 + "@types/detect-port": ^1.3.0 + "@types/diff": ^5.0.9 + "@types/node": ^18.0.0 + "@types/pretty-hrtime": ^1.0.0 + "@types/semver": ^7.3.4 + better-opn: ^3.0.2 + chalk: ^4.1.0 + cli-table3: ^0.6.1 + compression: ^1.7.4 + detect-port: ^1.3.0 + diff: ^5.2.0 + express: ^4.17.3 + fs-extra: ^11.1.0 + globby: ^14.0.1 + lodash: ^4.17.21 + open: ^8.4.0 + pretty-hrtime: ^1.0.3 + prompts: ^2.4.0 + read-pkg-up: ^7.0.1 + semver: ^7.3.7 + telejson: ^7.2.0 + tiny-invariant: ^1.3.1 + ts-dedent: ^2.0.0 + util: ^0.12.4 + util-deprecate: ^1.0.2 + watchpack: ^2.2.0 + ws: ^8.2.3 + checksum: 195762d1b177124ac1adb118616d54977a890be26026c2e58d944ebef3c65e5fd8db5f2412b02e29be28c2a7ebd5e88ca28d4bea7378d080553af6f0833cfdcd + languageName: node + linkType: hard + +"@storybook/csf-plugin@npm:8.1.11": + version: 8.1.11 + resolution: "@storybook/csf-plugin@npm:8.1.11" + dependencies: + "@storybook/csf-tools": 8.1.11 + unplugin: ^1.3.1 + checksum: cb41f58b57f453ad3d896a98789852e0b9f0aa2b1e0bf10e95794136954a5c9badb044913a15634f562b27a24d35833da5378de2848e7c9f55a6eb487261b13f + languageName: node + linkType: hard + +"@storybook/csf-tools@npm:8.1.11": + version: 8.1.11 + resolution: "@storybook/csf-tools@npm:8.1.11" + dependencies: + "@babel/generator": ^7.24.4 + "@babel/parser": ^7.24.4 + "@babel/traverse": ^7.24.1 + "@babel/types": ^7.24.0 + "@storybook/csf": ^0.1.7 + "@storybook/types": 8.1.11 + fs-extra: ^11.1.0 + recast: ^0.23.5 + ts-dedent: ^2.0.0 + checksum: b4eb8eef3f62528e5486ea206b53d674203f48cef0d7dac47579bd0698f69dc8071d624abecfe1f0031c80d3526fac647db1019582a8ae40a923515468ee1aac + languageName: node + linkType: hard + +"@storybook/csf@npm:^0.1.7": + version: 0.1.11 + resolution: "@storybook/csf@npm:0.1.11" + dependencies: + type-fest: ^2.19.0 + checksum: ba2a265f62ad82a2853b069f77e974efe31bed263a640ca1dd8e6d7e194022018a67ad4a2587ae928f33ae45aaf6ffedd5925ba3fcf3fe5b7996667a918e22eb + languageName: node + linkType: hard + +"@storybook/docs-mdx@npm:3.1.0-next.0": + version: 3.1.0-next.0 + resolution: "@storybook/docs-mdx@npm:3.1.0-next.0" + checksum: 9425906910c37be3ef66d9b0b674edb9871905e68ae507b40f07ecf1a7a78f67dafa8565d95ef69c082e02f9767585bcef27b29cee77c11614c5977f62d90f50 + languageName: node + linkType: hard + +"@storybook/docs-tools@npm:8.1.11": + version: 8.1.11 + resolution: "@storybook/docs-tools@npm:8.1.11" + dependencies: + "@storybook/core-common": 8.1.11 + "@storybook/core-events": 8.1.11 + "@storybook/preview-api": 8.1.11 + "@storybook/types": 8.1.11 + "@types/doctrine": ^0.0.3 + assert: ^2.1.0 + doctrine: ^3.0.0 + lodash: ^4.17.21 + checksum: efd319d391f7c7ee68fab60747f5a112c0d129b420b5592559fc92838ae1d85be374a8a2c901d076237ac4b6041589f0689b941efee32bf8d28e993c9b1b465e + languageName: node + linkType: hard + +"@storybook/global@npm:^5.0.0": + version: 5.0.0 + resolution: "@storybook/global@npm:5.0.0" + checksum: ede0ad35ec411fe31c61150dbd118fef344d1d0e72bf5d3502368e35cf68126f6b7ae4a0ab5e2ffe2f0baa3b4286f03ad069ba3e098e1725449ef08b7e154ba8 + languageName: node + linkType: hard + +"@storybook/icons@npm:^1.2.5": + version: 1.2.9 + resolution: "@storybook/icons@npm:1.2.9" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: ecb70017f2c7cdf0e9589b52b4c2fa5756b617c6c5ac42cfc71a9920a52ff3bc337ed932a9eb174d584d2121b5157995e0cc055e404c777b3af3cc85015ec2cc + languageName: node + linkType: hard + +"@storybook/manager-api@npm:8.1.11, @storybook/manager-api@npm:^8.1.11": + version: 8.1.11 + resolution: "@storybook/manager-api@npm:8.1.11" + dependencies: + "@storybook/channels": 8.1.11 + "@storybook/client-logger": 8.1.11 + "@storybook/core-events": 8.1.11 + "@storybook/csf": ^0.1.7 + "@storybook/global": ^5.0.0 + "@storybook/icons": ^1.2.5 + "@storybook/router": 8.1.11 + "@storybook/theming": 8.1.11 + "@storybook/types": 8.1.11 + dequal: ^2.0.2 + lodash: ^4.17.21 + memoizerific: ^1.11.3 + store2: ^2.14.2 + telejson: ^7.2.0 + ts-dedent: ^2.0.0 + checksum: 71875933b282ab63078349a820624cc6e45691ed9b0ca5db02c2ce86b8db66376ed6c612cd6d9cf84415edd159c645c6cc26501fb2cbe8fdb755580521dd3ee9 + languageName: node + linkType: hard + +"@storybook/manager@npm:8.1.11": + version: 8.1.11 + resolution: "@storybook/manager@npm:8.1.11" + checksum: 261fdd86dd21524a89552efebfc54106f02d17beaa8fd8f122ff70f82fe56169b69b5044249289896089c318af3a618ad2dff928c0847d4f86fbbdffe77933e2 + languageName: node + linkType: hard + +"@storybook/node-logger@npm:8.1.11": + version: 8.1.11 + resolution: "@storybook/node-logger@npm:8.1.11" + checksum: 7bca235fa65dadce0a736874e88fb8f1f19c6f932f4a847cd35a48b14e7e09bb9ba6e0780407459e39f8902ccf19e3657877ddace6ae7de8679632d8489bb245 + languageName: node + linkType: hard + +"@storybook/preview-api@npm:8.1.11": + version: 8.1.11 + resolution: "@storybook/preview-api@npm:8.1.11" + dependencies: + "@storybook/channels": 8.1.11 + "@storybook/client-logger": 8.1.11 + "@storybook/core-events": 8.1.11 + "@storybook/csf": ^0.1.7 + "@storybook/global": ^5.0.0 + "@storybook/types": 8.1.11 + "@types/qs": ^6.9.5 + dequal: ^2.0.2 + lodash: ^4.17.21 + memoizerific: ^1.11.3 + qs: ^6.10.0 + tiny-invariant: ^1.3.1 + ts-dedent: ^2.0.0 + util-deprecate: ^1.0.2 + checksum: d070af119e2375d0bfe78af903853df13dbcc7004fe9da29019f0f861f27730e64ff95b8fd8c4ef1f16b3fb65cb6716579d9019536d4e06dec9b59c22cc85ebe + languageName: node + linkType: hard + +"@storybook/preview@npm:8.1.11": + version: 8.1.11 + resolution: "@storybook/preview@npm:8.1.11" + checksum: 898beda9fc8362a1b65455bbba4f8a9403728336553851609d7111cffbdf75ca58a609b23d32f86bf9a68621fd03f3052d6770ea063bba8c4f0d6f0c99af153d + languageName: node + linkType: hard + +"@storybook/react-dom-shim@npm:8.1.11, @storybook/react-dom-shim@npm:^8.1.11": + version: 8.1.11 + resolution: "@storybook/react-dom-shim@npm:8.1.11" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + checksum: 35ac408faeb605bf5a78a91abd5199a316cf7bf0ddfe1354316168a166eed1ede651d9a115ff64ab86f4cf565d78b6cf2884adefba4249d9787f182a99332064 + languageName: node + linkType: hard + +"@storybook/router@npm:8.1.11": + version: 8.1.11 + resolution: "@storybook/router@npm:8.1.11" + dependencies: + "@storybook/client-logger": 8.1.11 + memoizerific: ^1.11.3 + qs: ^6.10.0 + checksum: 1b3589cbe1dfc712501f1a8a668babaa0baf55f9e5eb6842df1d4a8c2bcff5eac8ab92018e0becbd6a50215bcfb367f91343732c12eeec54ce76ad409c53d3fe + languageName: node + linkType: hard + +"@storybook/telemetry@npm:8.1.11": + version: 8.1.11 + resolution: "@storybook/telemetry@npm:8.1.11" dependencies: - type-detect: 4.0.8 - checksum: b4b5b73d4df4560fb8c0c7b38c7ad4aeabedd362f3373859d804c988c725889cde33550e4bcc7cd316a30f5152a2d1d43db71b6d0c38f5feef71fd8d016763f8 + "@storybook/client-logger": 8.1.11 + "@storybook/core-common": 8.1.11 + "@storybook/csf-tools": 8.1.11 + chalk: ^4.1.0 + detect-package-manager: ^2.0.1 + fetch-retry: ^5.0.2 + fs-extra: ^11.1.0 + read-pkg-up: ^7.0.1 + checksum: 4f7d448e98a3a0b5520de85f6cdf6364119383695273eaf6a539e3a3ad64929becf0874c4b3bfe9aba31c7e8088a731e5e33f44aa236e1941cd8db7a99e36e94 languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^10.0.2": - version: 10.2.0 - resolution: "@sinonjs/fake-timers@npm:10.2.0" +"@storybook/theming@npm:8.1.11, @storybook/theming@npm:^8.1.11": + version: 8.1.11 + resolution: "@storybook/theming@npm:8.1.11" dependencies: - "@sinonjs/commons": ^3.0.0 - checksum: 586c76e1dd90d03b0c4e754f2011325b38ac6055878c81c52434c900f36d9d245438c96ef69e08e28d9fbecf2335fb347b67850962d8b6e539dd7359d8c62802 + "@emotion/use-insertion-effect-with-fallbacks": ^1.0.1 + "@storybook/client-logger": 8.1.11 + "@storybook/global": ^5.0.0 + memoizerific: ^1.11.3 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + checksum: 11430fba26d987b4ebcaf18b86b354c149add7e06f0108ae31befd56397399b7e3721864e61db5bcee5f087b6a5d25f06e6d25f0effeb1b6504e7f78409478df languageName: node linkType: hard -"@spruceid/siwe-parser@npm:2.1.0": - version: 2.1.0 - resolution: "@spruceid/siwe-parser@npm:2.1.0" +"@storybook/types@npm:8.1.11, @storybook/types@npm:^8.1.11": + version: 8.1.11 + resolution: "@storybook/types@npm:8.1.11" dependencies: - "@noble/hashes": ^1.1.2 - apg-js: ^4.1.1 - uri-js: ^4.4.1 - valid-url: ^1.0.9 - checksum: 99365956bd5e35127568e7ee69246cfc79cc26d83f6fbc5e3a9ed6f0693f7da6f2ee67cf8b93b65761da3c3ce8cc156858bab85e24b2eadd49ec8ae07cb8826e + "@storybook/channels": 8.1.11 + "@types/express": ^4.7.0 + file-system-cache: 2.3.0 + checksum: 99215c9dc8ffcdfd9e54182cf2fe2f6f84cc94bdfe853096876d4715c1cc926317cdb8314ebc4ee78f2b98c65de718f9350d5545d579a08ba08da01864d1291b languageName: node linkType: hard @@ -7509,6 +8841,15 @@ __metadata: languageName: node linkType: hard +"@types/cross-spawn@npm:^6.0.2": + version: 6.0.6 + resolution: "@types/cross-spawn@npm:6.0.6" + dependencies: + "@types/node": "*" + checksum: b4172927cd1387cf037c3ade785ef46c87537b7bc2803d7f6663b4904d0c5d6f726415d1adb2fee4fecb21746738f11336076449265d46be4ce110cc3a8c8436 + languageName: node + linkType: hard + "@types/debug@npm:^4.1.7": version: 4.1.7 resolution: "@types/debug@npm:4.1.7" @@ -7525,6 +8866,41 @@ __metadata: languageName: node linkType: hard +"@types/detect-port@npm:^1.3.0": + version: 1.3.5 + resolution: "@types/detect-port@npm:1.3.5" + checksum: 923cf04c6a05af59090743baeb9948f1938ceb98c1f7ea93db7ac310210426b385aa00005d23039ebb8019a9d13e141f5246e9c733b290885018d722a4787921 + languageName: node + linkType: hard + +"@types/diff@npm:^5.0.9": + version: 5.2.1 + resolution: "@types/diff@npm:5.2.1" + checksum: 5983a323177bd691cb2194f5d55b960cd20a9c8fec653b4b038760c5809627cc9ea3578fdf10119ccbefefef193ea925f2817136eb97b17388f66b16c8480a8a + languageName: node + linkType: hard + +"@types/doctrine@npm:^0.0.3": + version: 0.0.3 + resolution: "@types/doctrine@npm:0.0.3" + checksum: 7ca9c8ff4d2da437785151c9eef0dd80b8fa12e0ff0fcb988458a78de4b6f0fc92727ba5bbee446e1df615a91f03053c5783b30b7c21ab6ceab6a42557e93e50 + languageName: node + linkType: hard + +"@types/ejs@npm:^3.1.1": + version: 3.1.5 + resolution: "@types/ejs@npm:3.1.5" + checksum: e142266283051f27a7f79329871b311687dede19ae20268d882e4de218c65e1311d28a300b85579ca67157a8d601b7234daa50c2f99b252b121d27b4e5b21468 + languageName: node + linkType: hard + +"@types/emscripten@npm:^1.39.6": + version: 1.39.13 + resolution: "@types/emscripten@npm:1.39.13" + checksum: 6a50f43a90db981e088c76219578a8e9eea0add3ed99d2daed3dfe8f8b755557b89ea5aea0166db2e9399882e109971f1724636101850a46cee51dc4c9337b1f + languageName: node + linkType: hard + "@types/eslint-scope@npm:^3.7.3": version: 3.7.3 resolution: "@types/eslint-scope@npm:3.7.3" @@ -7564,15 +8940,15 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:*, @types/express@npm:^4.17.13, @types/express@npm:^4.17.17": - version: 4.17.17 - resolution: "@types/express@npm:4.17.17" +"@types/express@npm:*, @types/express@npm:^4.17.13, @types/express@npm:^4.17.17, @types/express@npm:^4.7.0": + version: 4.17.21 + resolution: "@types/express@npm:4.17.21" dependencies: "@types/body-parser": "*" "@types/express-serve-static-core": ^4.17.33 "@types/qs": "*" "@types/serve-static": "*" - checksum: 0196dacc275ac3ce89d7364885cb08e7fb61f53ca101f65886dbf1daf9b7eb05c0943e2e4bbd01b0cc5e50f37e0eea7e4cbe97d0304094411ac73e1b7998f4da + checksum: fb238298630370a7392c7abdc80f495ae6c716723e114705d7e3fb67e3850b3859bbfd29391463a3fb8c0b32051847935933d99e719c0478710f8098ee7091c5 languageName: node linkType: hard @@ -7592,6 +8968,13 @@ __metadata: languageName: node linkType: hard +"@types/find-cache-dir@npm:^3.2.1": + version: 3.2.1 + resolution: "@types/find-cache-dir@npm:3.2.1" + checksum: bf5c4e96da40247cd9e6327f54dfccda961a0fb2d70e3c71bd05def94de4c2e6fb310fe8ecb0f04ecf5dbc52214e184b55a2337b0f87250d4ae1e2e7d58321e4 + languageName: node + linkType: hard + "@types/glob@npm:7.1.4": version: 7.1.4 resolution: "@types/glob@npm:7.1.4" @@ -7637,6 +9020,15 @@ __metadata: languageName: node linkType: hard +"@types/hast@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/hast@npm:3.0.4" + dependencies: + "@types/unist": "*" + checksum: 7a973e8d16fcdf3936090fa2280f408fb2b6a4f13b42edeb5fbd614efe042b82eac68e298e556d50f6b4ad585a3a93c353e9c826feccdc77af59de8dd400d044 + languageName: node + linkType: hard + "@types/he@npm:^1.2.3": version: 1.2.3 resolution: "@types/he@npm:1.2.3" @@ -7792,10 +9184,17 @@ __metadata: languageName: node linkType: hard -"@types/lodash@npm:*": - version: 4.14.194 - resolution: "@types/lodash@npm:4.14.194" - checksum: 113f34831c461469d91feca2dde737f88487732898b4d25e9eb23b087bb193985f864d1e1e0f3b777edc5022e460443588b6000a3b2348c966f72d17eedc35ea +"@types/lodash@npm:*, @types/lodash@npm:^4.14.167": + version: 4.17.6 + resolution: "@types/lodash@npm:4.17.6" + checksum: f748c672f49c54ee631a0fab6f26d56ab99bd68a4fb91604b5d7525a72102dd1917209c12d7078c988a375edb5dc70ca600db05ac01785306fd64470048cd16c + languageName: node + linkType: hard + +"@types/mdx@npm:^2.0.0": + version: 2.0.13 + resolution: "@types/mdx@npm:2.0.13" + checksum: 195137b548e75a85f0558bb1ca5088aff1c01ae0fc64454da06085b7513a043356d0bb51ed559d3cbc7ad724ccd8cef2a7d07d014b89a47a74dff8875ceb3b15 languageName: node linkType: hard @@ -7855,10 +9254,19 @@ __metadata: languageName: node linkType: hard -"@types/normalize-package-data@npm:^2.4.1": - version: 2.4.1 - resolution: "@types/normalize-package-data@npm:2.4.1" - checksum: e87bccbf11f95035c89a132b52b79ce69a1e3652fe55962363063c9c0dae0fe2477ebc585e03a9652adc6f381d24ba5589cc5e51849df4ced3d3e004a7d40ed5 +"@types/node@npm:^18.0.0": + version: 18.19.39 + resolution: "@types/node@npm:18.19.39" + dependencies: + undici-types: ~5.26.4 + checksum: d1de755983127b405458c427ae2cf77c89d120a617ca70999086a75fb0b6c6dbc1bdddfe1a8a7374c9ae55ed0589a2bd023ffb3b09ee25440c013afc6502dfe6 + languageName: node + linkType: hard + +"@types/normalize-package-data@npm:^2.4.0, @types/normalize-package-data@npm:^2.4.1": + version: 2.4.4 + resolution: "@types/normalize-package-data@npm:2.4.4" + checksum: 65dff72b543997b7be8b0265eca7ace0e34b75c3e5fee31de11179d08fa7124a7a5587265d53d0409532ecb7f7fba662c2012807963e1f9b059653ec2c83ee05 languageName: node linkType: hard @@ -7876,6 +9284,13 @@ __metadata: languageName: node linkType: hard +"@types/pretty-hrtime@npm:^1.0.0": + version: 1.0.3 + resolution: "@types/pretty-hrtime@npm:1.0.3" + checksum: 288061dff992c8107d5c7b5a1277bbb0a314a27eb10087dea628a08fa37694a655191a69e25a212c95e61e498363c48ad9e281d23964a448f6c14100a6be0910 + languageName: node + linkType: hard + "@types/prop-types@npm:*": version: 15.7.5 resolution: "@types/prop-types@npm:15.7.5" @@ -7890,10 +9305,10 @@ __metadata: languageName: node linkType: hard -"@types/qs@npm:*": - version: 6.9.7 - resolution: "@types/qs@npm:6.9.7" - checksum: 7fd6f9c25053e9b5bb6bc9f9f76c1d89e6c04f7707a7ba0e44cc01f17ef5284adb82f230f542c2d5557d69407c9a40f0f3515e8319afd14e1e16b5543ac6cdba +"@types/qs@npm:*, @types/qs@npm:^6.9.5": + version: 6.9.15 + resolution: "@types/qs@npm:6.9.15" + checksum: 97d8208c2b82013b618e7a9fc14df6bd40a73e1385ac479b6896bafc7949a46201c15f42afd06e86a05e914f146f495f606b6fb65610cc60cf2e0ff743ec38a2 languageName: node linkType: hard @@ -7922,14 +9337,13 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:>=16.9.11, @types/react@npm:^18.2.5": - version: 18.2.14 - resolution: "@types/react@npm:18.2.14" +"@types/react@npm:*, @types/react@npm:>=16.9.11, @types/react@npm:^16.8.0 || ^17.0.0 || ^18.0.0, @types/react@npm:^18.2.5": + version: 18.3.3 + resolution: "@types/react@npm:18.3.3" dependencies: "@types/prop-types": "*" - "@types/scheduler": "*" csstype: ^3.0.2 - checksum: a6a5e8cc78f486b9020d1ad009aa6c56943c68c7c6376e0f8399e9cbcd950b7b8f5d73f00200f5379f5e58d31d57d8aed24357f301d8e86108cd438ce6c8b3dd + checksum: c63d6a78163244e2022b01ef79b0baec4fe4da3475dc4a90bb8accefad35ef0c43560fd0312e5974f92a0f1108aa4d669ac72d73d66396aa060ea03b5d2e3873 languageName: node linkType: hard @@ -7967,17 +9381,10 @@ __metadata: languageName: node linkType: hard -"@types/scheduler@npm:*": - version: 0.16.3 - resolution: "@types/scheduler@npm:0.16.3" - checksum: 2b0aec39c24268e3ce938c5db2f2e77f5c3dd280e05c262d9c2fe7d890929e4632a6b8e94334017b66b45e4f92a5aa42ba3356640c2a1175fa37bef2f5200767 - languageName: node - linkType: hard - -"@types/semver@npm:^7.3.12, @types/semver@npm:^7.3.6, @types/semver@npm:^7.5.0": - version: 7.5.0 - resolution: "@types/semver@npm:7.5.0" - checksum: 0a64b9b9c7424d9a467658b18dd70d1d781c2d6f033096a6e05762d20ebbad23c1b69b0083b0484722aabf35640b78ccc3de26368bcae1129c87e9df028a22e2 +"@types/semver@npm:^7.3.12, @types/semver@npm:^7.3.4, @types/semver@npm:^7.3.6, @types/semver@npm:^7.5.0": + version: 7.5.8 + resolution: "@types/semver@npm:7.5.8" + checksum: ea6f5276f5b84c55921785a3a27a3cd37afee0111dfe2bcb3e03c31819c197c782598f17f0b150a69d453c9584cd14c4c4d7b9a55d2c5e6cacd4d66fdb3b3663 languageName: node linkType: hard @@ -8058,6 +9465,13 @@ __metadata: languageName: node linkType: hard +"@types/unist@npm:*, @types/unist@npm:^3.0.0": + version: 3.0.2 + resolution: "@types/unist@npm:3.0.2" + checksum: 3d04d0be69316e5f14599a0d993a208606c12818cf631fd399243d1dc7a9bd8a3917d6066baa6abc290814afbd744621484756803c80cba892c39cd4b4a85616 + languageName: node + linkType: hard + "@types/use-sync-external-store@npm:^0.0.3": version: 0.0.3 resolution: "@types/use-sync-external-store@npm:0.0.3" @@ -8267,6 +9681,13 @@ __metadata: languageName: node linkType: hard +"@ungap/structured-clone@npm:^1.0.0": + version: 1.2.0 + resolution: "@ungap/structured-clone@npm:1.2.0" + checksum: 4f656b7b4672f2ce6e272f2427d8b0824ed11546a601d8d5412b9d7704e83db38a8d9f402ecdf2b9063fc164af842ad0ec4a55819f621ed7e7ea4d1efcc74524 + languageName: node + linkType: hard + "@vitest/spy@npm:^0.34.1": version: 0.34.3 resolution: "@vitest/spy@npm:0.34.3" @@ -8803,6 +10224,37 @@ __metadata: languageName: node linkType: hard +"@yarnpkg/esbuild-plugin-pnp@npm:^3.0.0-rc.10": + version: 3.0.0-rc.15 + resolution: "@yarnpkg/esbuild-plugin-pnp@npm:3.0.0-rc.15" + dependencies: + tslib: ^2.4.0 + peerDependencies: + esbuild: ">=0.10.0" + checksum: 04da15355a99773b441742814ba4d0f3453a83df47aa07e215f167e156f109ab8e971489c8b1a4ddf3c79d568d35213f496ad52e97298228597e1aacc22680aa + languageName: node + linkType: hard + +"@yarnpkg/fslib@npm:2.10.3": + version: 2.10.3 + resolution: "@yarnpkg/fslib@npm:2.10.3" + dependencies: + "@yarnpkg/libzip": ^2.3.0 + tslib: ^1.13.0 + checksum: 0ca693f61d47bcf165411a121ed9123f512b1b5bfa5e1c6c8f280b4ffdbea9bf2a6db418f99ecfc9624587fdc695b2b64eb0fe7b4028e44095914b25ca99655e + languageName: node + linkType: hard + +"@yarnpkg/libzip@npm:2.3.0, @yarnpkg/libzip@npm:^2.3.0": + version: 2.3.0 + resolution: "@yarnpkg/libzip@npm:2.3.0" + dependencies: + "@types/emscripten": ^1.39.6 + tslib: ^1.13.0 + checksum: 533a4883f69bb013f955d80dc19719881697e6849ea5f0cbe6d87ef1d582b05cbae8a453802f92ad0c852f976296cac3ff7834be79a7e415b65cdf213e448110 + languageName: node + linkType: hard + "@zag-js/element-size@npm:0.3.2": version: 0.3.2 resolution: "@zag-js/element-size@npm:0.3.2" @@ -8931,12 +10383,19 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.1.0, acorn@npm:^8.10.0, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": - version: 8.10.0 - resolution: "acorn@npm:8.10.0" +"acorn@npm:^8.1.0, acorn@npm:^8.11.3, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.12.1 + resolution: "acorn@npm:8.12.1" bin: acorn: bin/acorn - checksum: 538ba38af0cc9e5ef983aee196c4b8b4d87c0c94532334fa7e065b2c8a1f85863467bb774231aae91613fcda5e68740c15d97b1967ae3394d20faddddd8af61d + checksum: 677880034aee5bdf7434cc2d25b641d7bedb0b5ef47868a78dadabedccf58e1c5457526d9d8249cd253f2df087e081c3fe7d903b448d8e19e5131a3065b83c07 + languageName: node + linkType: hard + +"address@npm:^1.0.1": + version: 1.2.2 + resolution: "address@npm:1.2.2" + checksum: ace439960c1e3564d8f523aff23a841904bf33a2a7c2e064f7f60a064194075758b9690e65bd9785692a4ef698a998c57eb74d145881a1cecab8ba658ddb1607 languageName: node linkType: hard @@ -9160,6 +10619,13 @@ __metadata: languageName: node linkType: hard +"app-root-dir@npm:^1.0.2": + version: 1.0.2 + resolution: "app-root-dir@npm:1.0.2" + checksum: d4b1653fc60b6465b982bf5a88b12051ed2d807d70609386a809306e1c636496f53522d61fa30f9f98c71aaae34f34e1651889cf17d81a44e3dafd2859d495ad + languageName: node + linkType: hard + "aproba@npm:^1.0.3 || ^2.0.0": version: 2.0.0 resolution: "aproba@npm:2.0.0" @@ -9229,12 +10695,12 @@ __metadata: languageName: node linkType: hard -"aria-hidden@npm:^1.2.2": - version: 1.2.3 - resolution: "aria-hidden@npm:1.2.3" +"aria-hidden@npm:^1.1.1, aria-hidden@npm:^1.2.2": + version: 1.2.4 + resolution: "aria-hidden@npm:1.2.4" dependencies: tslib: ^2.0.0 - checksum: 7d7d211629eef315e94ed3b064c6823d13617e609d3f9afab1c2ed86399bb8e90405f9bdd358a85506802766f3ecb468af985c67c846045a34b973bcc0289db9 + checksum: 2ac90b70d29c6349d86d90e022cf01f4885f9be193932d943a14127cf28560dd0baf068a6625f084163437a4be0578f513cf7892f4cc63bfe91aa41dce27c6b2 languageName: node linkType: hard @@ -9374,15 +10840,16 @@ __metadata: languageName: node linkType: hard -"assert@npm:^2.0.0": - version: 2.0.0 - resolution: "assert@npm:2.0.0" +"assert@npm:^2.0.0, assert@npm:^2.1.0": + version: 2.1.0 + resolution: "assert@npm:2.1.0" dependencies: - es6-object-assign: ^1.1.0 - is-nan: ^1.2.1 - object-is: ^1.0.1 - util: ^0.12.0 - checksum: bb91f181a86d10588ee16c5e09c280f9811373974c29974cbe401987ea34e966699d7989a812b0e19377b511ea0bc627f5905647ce569311824848ede382cae8 + call-bind: ^1.0.2 + is-nan: ^1.3.2 + object-is: ^1.1.5 + object.assign: ^4.1.4 + util: ^0.12.5 + checksum: 1ed1cabba9abe55f4109b3f7292b4e4f3cf2953aad8dc148c0b3c3bd676675c31b1abb32ef563b7d5a19d1715bf90d1e5f09fad2a4ee655199468902da80f7c2 languageName: node linkType: hard @@ -9482,6 +10949,15 @@ __metadata: languageName: node linkType: hard +"babel-core@npm:^7.0.0-bridge.0": + version: 7.0.0-bridge.0 + resolution: "babel-core@npm:7.0.0-bridge.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2a1cb879019dffb08d17bec36e13c3a6d74c94773f41c1fd8b14de13f149cc34b705b0a1e07b42fcf35917b49d78db6ff0c5c3b00b202a5235013d517b5c6bbb + languageName: node + linkType: hard + "babel-jest@npm:^29.5.0": version: 29.5.0 resolution: "babel-jest@npm:29.5.0" @@ -9548,16 +11024,28 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.4.6": - version: 0.4.6 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.6" +"babel-plugin-polyfill-corejs2@npm:^0.4.10, babel-plugin-polyfill-corejs2@npm:^0.4.6": + version: 0.4.11 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.11" dependencies: "@babel/compat-data": ^7.22.6 - "@babel/helper-define-polyfill-provider": ^0.4.3 + "@babel/helper-define-polyfill-provider": ^0.6.2 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 08896811df31530be6a9bcdd630cb9fd4b5ae5181039d18db3796efbc54e38d57a42af460845c10a04434e1bc45c0d47743c7e6c860383cc6b141083cde22030 + checksum: f098353ce7c7dde1a1d2710858e01b471e85689110c9e37813e009072347eb8c55d5f84d20d3bf1cab31755f20078ba90f8855fdc4686a9daa826a95ff280bd7 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs3@npm:^0.10.4": + version: 0.10.4 + resolution: "babel-plugin-polyfill-corejs3@npm:0.10.4" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.6.1 + core-js-compat: ^3.36.1 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: b96a54495f7cc8b3797251c8c15f5ed015edddc3110fc122f6b32c94bec33af1e8bc56fa99091808f500bde0cccaaa266889cdc5935d9e6e9cf09898214f02dd languageName: node linkType: hard @@ -9584,6 +11072,17 @@ __metadata: languageName: node linkType: hard +"babel-plugin-polyfill-regenerator@npm:^0.6.1": + version: 0.6.2 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.2" + dependencies: + "@babel/helper-define-polyfill-provider": ^0.6.2 + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 150233571072b6b3dfe946242da39cba8587b7f908d1c006f7545fc88b0e3c3018d445739beb61e7a75835f0c2751dbe884a94ff9b245ec42369d9267e0e1b3f + languageName: node + linkType: hard + "babel-plugin-tsconfig-paths-module-resolver@npm:^1.0.4": version: 1.0.4 resolution: "babel-plugin-tsconfig-paths-module-resolver@npm:1.0.4" @@ -9674,10 +11173,19 @@ __metadata: languageName: node linkType: hard -"big-integer@npm:^1.6.17": - version: 1.6.51 - resolution: "big-integer@npm:1.6.51" - checksum: 3d444173d1b2e20747e2c175568bedeebd8315b0637ea95d75fd27830d3b8e8ba36c6af40374f36bdaea7b5de376dcada1b07587cb2a79a928fccdb6e6e3c518 +"better-opn@npm:^3.0.2": + version: 3.0.2 + resolution: "better-opn@npm:3.0.2" + dependencies: + open: ^8.0.4 + checksum: 1471552fa7f733561e7f49e812be074b421153006ca744de985fb6d38939807959fc5fe9cb819cf09f864782e294704fd3b31711ea14c115baf3330a2f1135de + languageName: node + linkType: hard + +"big-integer@npm:^1.6.17, big-integer@npm:^1.6.44": + version: 1.6.52 + resolution: "big-integer@npm:1.6.52" + checksum: 6e86885787a20fed96521958ae9086960e4e4b5e74d04f3ef7513d4d0ad631a9f3bde2730fc8aaa4b00419fc865f6ec573e5320234531ef37505da7da192c40b languageName: node linkType: hard @@ -9816,6 +11324,15 @@ __metadata: languageName: node linkType: hard +"bplist-parser@npm:^0.2.0": + version: 0.2.0 + resolution: "bplist-parser@npm:0.2.0" + dependencies: + big-integer: ^1.6.44 + checksum: d5339dd16afc51de6c88f88f58a45b72ed6a06aa31f5557d09877575f220b7c1d3fbe375da0b62e6a10d4b8ed80523567e351f24014f5bc886ad523758142cdd + languageName: node + linkType: hard + "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" @@ -9851,6 +11368,13 @@ __metadata: languageName: node linkType: hard +"browser-assert@npm:^1.2.1": + version: 1.2.1 + resolution: "browser-assert@npm:1.2.1" + checksum: 8b2407cd04c1ed592cf892dec35942b7d72635829221e0788c9a16c4d2afa8b7156bc9705b1c4b32c30d88136c576fda3cbcb8f494d6f865264c706ea8798d92 + languageName: node + linkType: hard + "browser-pack@npm:^6.0.1": version: 6.1.0 resolution: "browser-pack@npm:6.1.0" @@ -9947,6 +11471,15 @@ __metadata: languageName: node linkType: hard +"browserify-zlib@npm:^0.1.4": + version: 0.1.4 + resolution: "browserify-zlib@npm:0.1.4" + dependencies: + pako: ~0.2.0 + checksum: abee4cb4349e8a21391fd874564f41b113fe691372913980e6fa06a777e4ea2aad4e942af14ab99bce190d5ac8f5328201432f4ef0eae48c6d02208bc212976f + languageName: node + linkType: hard + "browserify-zlib@npm:^0.2.0, browserify-zlib@npm:~0.2.0": version: 0.2.0 resolution: "browserify-zlib@npm:0.2.0" @@ -10014,17 +11547,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.14.5, browserslist@npm:^4.21.9, browserslist@npm:^4.22.1": - version: 4.22.1 - resolution: "browserslist@npm:4.22.1" +"browserslist@npm:^4.14.5, browserslist@npm:^4.22.2, browserslist@npm:^4.23.0": + version: 4.23.1 + resolution: "browserslist@npm:4.23.1" dependencies: - caniuse-lite: ^1.0.30001541 - electron-to-chromium: ^1.4.535 - node-releases: ^2.0.13 - update-browserslist-db: ^1.0.13 + caniuse-lite: ^1.0.30001629 + electron-to-chromium: ^1.4.796 + node-releases: ^2.0.14 + update-browserslist-db: ^1.0.16 bin: browserslist: cli.js - checksum: 7e6b10c53f7dd5d83fd2b95b00518889096382539fed6403829d447e05df4744088de46a571071afb447046abc3c66ad06fbc790e70234ec2517452e32ffd862 + checksum: 06189e2d6666a203ce097cc0e713a40477d08420927b79af139211e5712f3cf676fdc4dd6af3aa493d47c09206a344b3420a8315577dbe88c58903132de9b0f5 languageName: node linkType: hard @@ -10074,7 +11607,7 @@ __metadata: languageName: node linkType: hard -"buffer@npm:^5.2.1, buffer@npm:^5.5.0": +"buffer@npm:^5.2.1, buffer@npm:^5.5.0, buffer@npm:^5.7.1": version: 5.7.1 resolution: "buffer@npm:5.7.1" dependencies: @@ -10256,15 +11789,16 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5": - version: 1.0.6 - resolution: "call-bind@npm:1.0.6" +"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.7": + version: 1.0.7 + resolution: "call-bind@npm:1.0.7" dependencies: + es-define-property: ^1.0.0 es-errors: ^1.3.0 function-bind: ^1.1.2 - get-intrinsic: ^1.2.3 - set-function-length: ^1.2.0 - checksum: 9e75989b60124df0fee40c129b2f8f401efb54e40451e18f112b64654c7d6d0dd7b6195e990edaeb3fdb447911926a19ffe1635858de00d68826ced6eeab24a9 + get-intrinsic: ^1.2.4 + set-function-length: ^1.2.1 + checksum: 295c0c62b90dd6522e6db3b0ab1ce26bdf9e7404215bda13cfee25b626b5ff1a7761324d58d38b1ef1607fc65aca2d06e44d2e18d0dfc6c14b465b00d8660029 languageName: node linkType: hard @@ -10323,10 +11857,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001541": - version: 1.0.30001550 - resolution: "caniuse-lite@npm:1.0.30001550" - checksum: b48d5a0bd25d634d61f410e0130c5e6c328724285c3c6065644eb41f86a227f5db0eb77da25d0fe3c6c9b04bbd040c9c164bf8dc50dd75cb30fc578aaae562f1 +"caniuse-lite@npm:^1.0.30001629": + version: 1.0.30001640 + resolution: "caniuse-lite@npm:1.0.30001640" + checksum: ec492d8d1e11d1c55e0f5c0f218229369dc0a4bd1b5d0a579a6435865fe8f4c84bde7e816a844cce1b9cdd97f5a85b6dac5599639fabcdb0c4c5bd039e46cbfd languageName: node linkType: hard @@ -10394,7 +11928,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:3.5.3, chokidar@npm:^3.5.1, chokidar@npm:^3.5.3": +"chokidar@npm:3.5.3": version: 3.5.3 resolution: "chokidar@npm:3.5.3" dependencies: @@ -10413,6 +11947,25 @@ __metadata: languageName: node linkType: hard +"chokidar@npm:^3.5.1, chokidar@npm:^3.5.3, chokidar@npm:^3.6.0": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: ~3.1.2 + braces: ~3.0.2 + fsevents: ~2.3.2 + glob-parent: ~5.1.2 + is-binary-path: ~2.1.0 + is-glob: ~4.0.1 + normalize-path: ~3.0.0 + readdirp: ~3.6.0 + dependenciesMeta: + fsevents: + optional: true + checksum: d2f29f499705dcd4f6f3bbed79a9ce2388cf530460122eed3b9c48efeab7a4e28739c6551fd15bec9245c6b9eeca7a32baa64694d64d9b6faeb74ddb8c4a413d + languageName: node + linkType: hard + "chownr@npm:^1.1.1": version: 1.1.4 resolution: "chownr@npm:1.1.4" @@ -10479,6 +12032,15 @@ __metadata: languageName: node linkType: hard +"citty@npm:^0.1.6": + version: 0.1.6 + resolution: "citty@npm:0.1.6" + dependencies: + consola: ^3.2.3 + checksum: 3fbcaaea92d328deddb5aba7d629d9076d4f1aa0338f59db7ea647a8f51eedc14b7f6218c87ad03c9e3c126213ba87d13d7774f9c30d64209f4b074aa83bd6ab + languageName: node + linkType: hard + "cjs-module-lexer@npm:^1.0.0": version: 1.2.2 resolution: "cjs-module-lexer@npm:1.2.2" @@ -10525,6 +12087,19 @@ __metadata: languageName: node linkType: hard +"cli-table3@npm:^0.6.1": + version: 0.6.5 + resolution: "cli-table3@npm:0.6.5" + dependencies: + "@colors/colors": 1.5.0 + string-width: ^4.2.0 + dependenciesMeta: + "@colors/colors": + optional: true + checksum: ab7afbf4f8597f1c631f3ee6bb3481d0bfeac8a3b81cffb5a578f145df5c88003b6cfff46046a7acae86596fdd03db382bfa67f20973b6b57425505abc47e42c + languageName: node + linkType: hard + "cli-truncate@npm:^2.1.0": version: 2.1.0 resolution: "cli-truncate@npm:2.1.0" @@ -10633,7 +12208,7 @@ __metadata: languageName: node linkType: hard -"color-convert@npm:^1.9.0": +"color-convert@npm:^1.3.0, color-convert@npm:^1.9.0": version: 1.9.3 resolution: "color-convert@npm:1.9.3" dependencies: @@ -10665,6 +12240,15 @@ __metadata: languageName: node linkType: hard +"color-string@npm:^0.3.0": + version: 0.3.0 + resolution: "color-string@npm:0.3.0" + dependencies: + color-name: ^1.0.0 + checksum: cc65013a94d399ddcb81b3b4b6e0d2166cbaa77311260ff6271f215a286d3db58ab3a217bdb175f8b9dd95f9ea7ac94f71a595af6bcd3b6a02fea6e75ddaf5fb + languageName: node + linkType: hard + "color-string@npm:^1.9.0": version: 1.9.1 resolution: "color-string@npm:1.9.1" @@ -10684,10 +12268,21 @@ __metadata: languageName: node linkType: hard -"color2k@npm:^2.0.0": - version: 2.0.2 - resolution: "color2k@npm:2.0.2" - checksum: a024d05c0eb24c6cf4f50b73fc948734ebd8cd0ce1fcfd17f4a17e6965c29764fa4b528161de4e65939d6fc32b3063d496c327eb0f48c084b4d79707ddb5965f +"color2k@npm:^2.0.0, color2k@npm:^2.0.2": + version: 2.0.3 + resolution: "color2k@npm:2.0.3" + checksum: 0748e16e43c1740045af61f44de5d181f3f7a2a9cb0d5cccdccee23d04e3f107f02aaafebb7ca3335cca1d11849c6321aba702eb2f893e993a77f65761de7661 + languageName: node + linkType: hard + +"color@npm:^0.11.3": + version: 0.11.4 + resolution: "color@npm:0.11.4" + dependencies: + clone: ^1.0.2 + color-convert: ^1.3.0 + color-string: ^0.3.0 + checksum: a6f624fd159e9311a6c1c86ac05b5b550c98e2d1e5646e032b8481e5e113127c06a84678b91c89c96b11b58c1c723dd9766b1b02cb2d441c6212a0f7cb3dad73 languageName: node linkType: hard @@ -10750,6 +12345,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^6.2.1": + version: 6.2.1 + resolution: "commander@npm:6.2.1" + checksum: d7090410c0de6bc5c67d3ca41c41760d6d268f3c799e530aafb73b7437d1826bbf0d2a3edac33f8b57cc9887b4a986dce307fa5557e109be40eadb7c43b21742 + languageName: node + linkType: hard + "commander@npm:^8.3.0": version: 8.3.0 resolution: "commander@npm:8.3.0" @@ -10866,6 +12468,13 @@ __metadata: languageName: node linkType: hard +"confbox@npm:^0.1.7": + version: 0.1.7 + resolution: "confbox@npm:0.1.7" + checksum: bde836c26f5154a348b0c0a757f8a0138929e5737e0553be3c4f07a056abca618b861aa63ac3b22d344789b56be99a1382928933e08cd500df00213bf4d8fb43 + languageName: node + linkType: hard + "connect-history-api-fallback@npm:^2.0.0": version: 2.0.0 resolution: "connect-history-api-fallback@npm:2.0.0" @@ -10873,6 +12482,13 @@ __metadata: languageName: node linkType: hard +"consola@npm:^3.2.3": + version: 3.2.3 + resolution: "consola@npm:3.2.3" + checksum: 32ec70e177dd2385c42e38078958cc7397be91db21af90c6f9faa0b16168b49b1c61d689338604bbb2d64370b9347a35f42a9197663a913d3a405bb0ce728499 + languageName: node + linkType: hard + "console-browserify@npm:^1.1.0, console-browserify@npm:^1.2.0": version: 1.2.0 resolution: "console-browserify@npm:1.2.0" @@ -10977,12 +12593,12 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.31.0, core-js-compat@npm:^3.32.2": - version: 3.33.0 - resolution: "core-js-compat@npm:3.33.0" +"core-js-compat@npm:^3.31.0, core-js-compat@npm:^3.32.2, core-js-compat@npm:^3.36.1": + version: 3.37.1 + resolution: "core-js-compat@npm:3.37.1" dependencies: - browserslist: ^4.22.1 - checksum: 83ae54008c09b8e0ae3c59457039866c342c7e28b0d30eebb638a5b51c01432e63fe97695c90645cbc6a8b073a4f9a8b0e75f0818bbf8b4b054e01f4c17d3181 + browserslist: ^4.23.0 + checksum: 5e7430329358bced08c30950512d2081aea0a5652b4c5892cbb3c4a6db05b0d3893a191a955162a07fdb5f4fe74e61b6429fdb503f54e062336d76e43c9555d9 languageName: node linkType: hard @@ -11069,7 +12685,7 @@ __metadata: languageName: node linkType: hard -"create-require@npm:^1.1.0": +"create-require@npm:^1.1.0, create-require@npm:^1.1.1": version: 1.1.1 resolution: "create-require@npm:1.1.1" checksum: a9a1503d4390d8b59ad86f4607de7870b39cad43d929813599a23714831e81c520bddf61bcdd1f8e30f05fd3a2b71ae8538e946eb2786dc65c2bbc520f692eff @@ -11136,7 +12752,7 @@ __metadata: languageName: node linkType: hard -"crypto-browserify@npm:^3.0.0, crypto-browserify@npm:^3.12.0": +"crypto-browserify@npm:^3.0.0, crypto-browserify@npm:^3.11.0, crypto-browserify@npm:^3.12.0": version: 3.12.0 resolution: "crypto-browserify@npm:3.12.0" dependencies: @@ -11155,6 +12771,15 @@ __metadata: languageName: node linkType: hard +"crypto-random-string@npm:^4.0.0": + version: 4.0.0 + resolution: "crypto-random-string@npm:4.0.0" + dependencies: + type-fest: ^1.0.1 + checksum: 91f148f27bcc8582798f0fb3e75a09d9174557f39c3c40a89dd1bd70fb5a14a02548245aa26fa7d663c426ac5026f4729841231c84f9e30e8c8ece5e38656741 + languageName: node + linkType: hard + "css-box-model@npm:1.2.1": version: 1.2.1 resolution: "css-box-model@npm:1.2.1" @@ -11442,6 +13067,16 @@ __metadata: languageName: node linkType: hard +"default-browser-id@npm:3.0.0": + version: 3.0.0 + resolution: "default-browser-id@npm:3.0.0" + dependencies: + bplist-parser: ^0.2.0 + untildify: ^4.0.0 + checksum: 279c7ad492542e5556336b6c254a4eaf31b2c63a5433265655ae6e47301197b6cfb15c595a6fdc6463b2ff8e1a1a1ed3cba56038a60e1527ba4ab1628c6b9941 + languageName: node + linkType: hard + "default-gateway@npm:^6.0.3": version: 6.0.3 resolution: "default-gateway@npm:6.0.3" @@ -11467,15 +13102,14 @@ __metadata: languageName: node linkType: hard -"define-data-property@npm:^1.1.2": - version: 1.1.2 - resolution: "define-data-property@npm:1.1.2" +"define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" dependencies: + es-define-property: ^1.0.0 es-errors: ^1.3.0 - get-intrinsic: ^1.2.2 gopd: ^1.0.1 - has-property-descriptors: ^1.0.1 - checksum: a903d932c83ede85d47d7764fff23435e038e8d7c2ed09a5461d59a0279bf590ed7459ac9ab468e550e24d81aa91e4de1714df155ecce4c925e94bc5ea94f9f3 + checksum: 8068ee6cab694d409ac25936eb861eea704b7763f7f342adbdfe337fc27c78d7ae0eff2364b2917b58c508d723c7a074326d068eef2e45c4edcd85cf94d0313b languageName: node linkType: hard @@ -11503,6 +13137,13 @@ __metadata: languageName: node linkType: hard +"defu@npm:^6.1.4": + version: 6.1.4 + resolution: "defu@npm:6.1.4" + checksum: 40e3af6338f195ac1564f53d1887fa2d0429ac7e8c081204bc4d29191180059d3952b5f4e08fe5df8d59eb873aa26e9c88b56d4fac699673d4a372c93620b229 + languageName: node + linkType: hard + "degenerator@npm:^5.0.0": version: 5.0.1 resolution: "degenerator@npm:5.0.1" @@ -11634,7 +13275,7 @@ __metadata: languageName: node linkType: hard -"detect-indent@npm:^6.0.0": +"detect-indent@npm:^6.0.0, detect-indent@npm:^6.1.0": version: 6.1.0 resolution: "detect-indent@npm:6.1.0" checksum: ab953a73c72dbd4e8fc68e4ed4bfd92c97eb6c43734af3900add963fd3a9316f3bc0578b018b24198d4c31a358571eff5f0656e81a1f3b9ad5c547d58b2d093d @@ -11669,6 +13310,28 @@ __metadata: languageName: node linkType: hard +"detect-package-manager@npm:^2.0.1": + version: 2.0.1 + resolution: "detect-package-manager@npm:2.0.1" + dependencies: + execa: ^5.1.1 + checksum: e72b910182d5ad479198d4235be206ac64a479257b32201bb06f3c842cc34c65ea851d46f72cc1d4bf535bcc6c4b44b5b86bb29fe1192b8c9c07b46883672f28 + languageName: node + linkType: hard + +"detect-port@npm:^1.3.0": + version: 1.6.1 + resolution: "detect-port@npm:1.6.1" + dependencies: + address: ^1.0.1 + debug: 4 + bin: + detect: bin/detect-port.js + detect-port: bin/detect-port.js + checksum: 0429fa423abb15fc453face64e6ffa406e375f51f5b4421a7886962e680dc05824eae9b6ee4594ba273685c3add415ad00982b5da54802ac3de6f846173284c3 + languageName: node + linkType: hard + "detective@npm:^5.2.0": version: 5.2.0 resolution: "detective@npm:5.2.0" @@ -11710,7 +13373,7 @@ __metadata: languageName: node linkType: hard -"diff@npm:5.0.0, diff@npm:^5.0.0": +"diff@npm:5.0.0": version: 5.0.0 resolution: "diff@npm:5.0.0" checksum: f19fe29284b633afdb2725c2a8bb7d25761ea54d321d8e67987ac851c5294be4afeab532bd84531e02583a3fe7f4014aa314a3eda84f5590e7a9e6b371ef3b46 @@ -11724,6 +13387,13 @@ __metadata: languageName: node linkType: hard +"diff@npm:^5.0.0, diff@npm:^5.2.0": + version: 5.2.0 + resolution: "diff@npm:5.2.0" + checksum: 12b63ca9c36c72bafa3effa77121f0581b4015df18bc16bac1f8e263597735649f1a173c26f7eba17fb4162b073fee61788abe49610e6c70a2641fe1895443fd + languageName: node + linkType: hard + "diffie-hellman@npm:^5.0.0": version: 5.0.3 resolution: "diffie-hellman@npm:5.0.3" @@ -11893,10 +13563,17 @@ __metadata: languageName: node linkType: hard -"dotenv@npm:^16.3.1": - version: 16.3.1 - resolution: "dotenv@npm:16.3.1" - checksum: 15d75e7279018f4bafd0ee9706593dd14455ddb71b3bcba9c52574460b7ccaf67d5cf8b2c08a5af1a9da6db36c956a04a1192b101ee102a3e0cf8817bbcf3dfd +"dotenv-expand@npm:^10.0.0": + version: 10.0.0 + resolution: "dotenv-expand@npm:10.0.0" + checksum: 2a38b470efe0abcb1ac8490421a55e1d764dc9440fd220942bce40965074f3fb00b585f4346020cb0f0f219966ee6b4ee5023458b3e2953fe5b3214de1b314ee + languageName: node + linkType: hard + +"dotenv@npm:^16.0.0, dotenv@npm:^16.3.1": + version: 16.4.5 + resolution: "dotenv@npm:16.4.5" + checksum: 301a12c3d44fd49888b74eb9ccf9f07a1f5df43f489e7fcb89647a2edcd84c42d6bc349dc8df099cd18f07c35c7b04685c1a4f3e6a6a9e6b30f8d48c15b7f49c languageName: node linkType: hard @@ -11928,6 +13605,18 @@ __metadata: languageName: node linkType: hard +"duplexify@npm:^3.5.0, duplexify@npm:^3.6.0": + version: 3.7.1 + resolution: "duplexify@npm:3.7.1" + dependencies: + end-of-stream: ^1.0.0 + inherits: ^2.0.1 + readable-stream: ^2.0.0 + stream-shift: ^1.0.0 + checksum: 3c2ed2223d956a5da713dae12ba8295acb61d9acd966ccbba938090d04f4574ca4dca75cca089b5077c2d7e66101f32e6ea9b36a78ca213eff574e7a8b8accf2 + languageName: node + linkType: hard + "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" @@ -11981,7 +13670,7 @@ __metadata: languageName: node linkType: hard -"ejs@npm:^3.1.9": +"ejs@npm:^3.1.10, ejs@npm:^3.1.9": version: 3.1.10 resolution: "ejs@npm:3.1.10" dependencies: @@ -11992,10 +13681,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.535": - version: 1.4.557 - resolution: "electron-to-chromium@npm:1.4.557" - checksum: 16f24e8d648489f0bfe7c2ffd4ada282bd68465862779f1f2e0afff5357e96536b075731c4b721dd27e2eae72008dc66d79e7bce6315e1c8f02947d41d988b78 +"electron-to-chromium@npm:^1.4.796": + version: 1.4.816 + resolution: "electron-to-chromium@npm:1.4.816" + checksum: 5abaa04cee77af4889e68d7fd7305c50b98eaa9b4016b228c85de5713a933767e423e2e6bcd71007fff1c405c5bea79d6e9e9d18efddaa966040fe9e97f43e2e languageName: node linkType: hard @@ -12058,7 +13747,7 @@ __metadata: languageName: node linkType: hard -"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": +"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" dependencies: @@ -12164,6 +13853,15 @@ __metadata: languageName: node linkType: hard +"es-define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "es-define-property@npm:1.0.0" + dependencies: + get-intrinsic: ^1.2.4 + checksum: f66ece0a887b6dca71848fa71f70461357c0e4e7249696f81bad0a1f347eed7b31262af4a29f5d726dc026426f085483b6b90301855e647aa8e21936f07293c6 + languageName: node + linkType: hard + "es-errors@npm:^1.3.0": version: 1.3.0 resolution: "es-errors@npm:1.3.0" @@ -12188,10 +13886,10 @@ __metadata: languageName: node linkType: hard -"es-module-lexer@npm:^1.2.1": - version: 1.2.1 - resolution: "es-module-lexer@npm:1.2.1" - checksum: c4145b853e1491eaa5d591e4580926d242978c38071ad3d09165c3b6d50314cc0ae3bf6e1dec81a9e53768b9299df2063d2e4a67d7742a5029ddeae6c4fc26f0 +"es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.5.0": + version: 1.5.4 + resolution: "es-module-lexer@npm:1.5.4" + checksum: a0cf04fb92d052647ac7d818d1913b98d3d3d0f5b9d88f0eafb993436e4c3e2c958599db68839d57f2dfa281fdf0f60e18d448eb78fc292c33c0f25635b6854f languageName: node linkType: hard @@ -12215,13 +13913,6 @@ __metadata: languageName: node linkType: hard -"es6-object-assign@npm:^1.1.0": - version: 1.1.0 - resolution: "es6-object-assign@npm:1.1.0" - checksum: 8d4fdf63484d78b5c64cacc2c2e1165bc7b6a64b739d2a9db6a4dc8641d99cc9efb433cdd4dc3d3d6b00bfa6ce959694e4665e3255190339945c5f33b692b5d8 - languageName: node - linkType: hard - "esbuild-android-64@npm:0.14.54": version: 0.14.54 resolution: "esbuild-android-64@npm:0.14.54" @@ -12334,6 +14025,24 @@ __metadata: languageName: node linkType: hard +"esbuild-plugin-alias@npm:^0.2.1": + version: 0.2.1 + resolution: "esbuild-plugin-alias@npm:0.2.1" + checksum: afe2d2c8b5f09d5321cb8d9c0825e8a9f6e03c2d50df92f953a291d4620cc29eddb3da9e33b238f6d8f77738e0277bdcb831f127399449fecf78fb84c04e5da9 + languageName: node + linkType: hard + +"esbuild-register@npm:^3.5.0": + version: 3.5.0 + resolution: "esbuild-register@npm:3.5.0" + dependencies: + debug: ^4.3.4 + peerDependencies: + esbuild: ">=0.12 <1" + checksum: f4307753c9672a2c901d04a1165031594a854f0a4c6f4c1db08aa393b68a193d38f2df483dc8ca0513e89f7b8998415e7e26fb9830989fb8cdccc5fb5f181c6b + languageName: node + linkType: hard + "esbuild-sunos-64@npm:0.14.54": version: 0.14.54 resolution: "esbuild-sunos-64@npm:0.14.54" @@ -12436,6 +14145,86 @@ __metadata: languageName: node linkType: hard +"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0": + version: 0.20.2 + resolution: "esbuild@npm:0.20.2" + dependencies: + "@esbuild/aix-ppc64": 0.20.2 + "@esbuild/android-arm": 0.20.2 + "@esbuild/android-arm64": 0.20.2 + "@esbuild/android-x64": 0.20.2 + "@esbuild/darwin-arm64": 0.20.2 + "@esbuild/darwin-x64": 0.20.2 + "@esbuild/freebsd-arm64": 0.20.2 + "@esbuild/freebsd-x64": 0.20.2 + "@esbuild/linux-arm": 0.20.2 + "@esbuild/linux-arm64": 0.20.2 + "@esbuild/linux-ia32": 0.20.2 + "@esbuild/linux-loong64": 0.20.2 + "@esbuild/linux-mips64el": 0.20.2 + "@esbuild/linux-ppc64": 0.20.2 + "@esbuild/linux-riscv64": 0.20.2 + "@esbuild/linux-s390x": 0.20.2 + "@esbuild/linux-x64": 0.20.2 + "@esbuild/netbsd-x64": 0.20.2 + "@esbuild/openbsd-x64": 0.20.2 + "@esbuild/sunos-x64": 0.20.2 + "@esbuild/win32-arm64": 0.20.2 + "@esbuild/win32-ia32": 0.20.2 + "@esbuild/win32-x64": 0.20.2 + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: bc88050fc1ca5c1bd03648f9979e514bdefb956a63aa3974373bb7b9cbac0b3aac9b9da1b5bdca0b3490e39d6b451c72815dbd6b7d7f978c91fbe9c9e9aa4e4c + languageName: node + linkType: hard + "esbuild@npm:^0.18.10": version: 0.18.20 resolution: "esbuild@npm:0.18.20" @@ -12593,10 +14382,10 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.1.1": - version: 3.1.1 - resolution: "escalade@npm:3.1.1" - checksum: a3e2a99f07acb74b3ad4989c48ca0c3140f69f923e56d0cba0526240ee470b91010f9d39001f2a4a313841d237ede70a729e92125191ba5d21e74b106800b133 +"escalade@npm:^3.1.1, escalade@npm:^3.1.2": + version: 3.1.2 + resolution: "escalade@npm:3.1.2" + checksum: 1ec0977aa2772075493002bdbd549d595ff6e9393b1cb0d7d6fcaf78c750da0c158f180938365486f75cb69fba20294351caddfce1b46552a7b6c3cde52eaa02 languageName: node linkType: hard @@ -13321,16 +15110,16 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9": - version: 3.2.12 - resolution: "fast-glob@npm:3.2.12" +"fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2": + version: 3.3.2 + resolution: "fast-glob@npm:3.3.2" dependencies: "@nodelib/fs.stat": ^2.0.2 "@nodelib/fs.walk": ^1.2.3 glob-parent: ^5.1.2 merge2: ^1.3.0 micromatch: ^4.0.4 - checksum: 0b1990f6ce831c7e28c4d505edcdaad8e27e88ab9fa65eedadb730438cfc7cde4910d6c975d6b7b8dc8a73da4773702ebcfcd6e3518e73938bb1383badfe01c2 + checksum: 900e4979f4dbc3313840078419245621259f349950411ca2fa445a2f9a1a6d98c3b5e7e0660c5ccd563aa61abe133a21765c6c0dec8e57da1ba71d8000b05ec1 languageName: node linkType: hard @@ -13457,6 +15246,13 @@ __metadata: languageName: node linkType: hard +"fetch-retry@npm:^5.0.2": + version: 5.0.6 + resolution: "fetch-retry@npm:5.0.6" + checksum: 4ad8bca6ec7a7b1212e636bb422a9ae8bb9dce38df0b441c9eb77a29af99b368029d6248ff69427da67e3d43c53808b121135ea395e7fe4f8f383e0ad65b4f27 + languageName: node + linkType: hard + "figures@npm:^5.0.0": version: 5.0.0 resolution: "figures@npm:5.0.0" @@ -13476,6 +15272,16 @@ __metadata: languageName: node linkType: hard +"file-system-cache@npm:2.3.0": + version: 2.3.0 + resolution: "file-system-cache@npm:2.3.0" + dependencies: + fs-extra: 11.1.1 + ramda: 0.29.0 + checksum: 74afa2870a062500643d41e02d1fbd47a3f30100f9e153dec5233d59f05545f4c8ada6085629d624e043479ac28c0cafc31824f7b49a3f997efab8cc5d05bfee + languageName: node + linkType: hard + "file-uri-to-path@npm:1.0.0": version: 1.0.0 resolution: "file-uri-to-path@npm:1.0.0" @@ -13526,6 +15332,28 @@ __metadata: languageName: node linkType: hard +"find-cache-dir@npm:^2.0.0": + version: 2.1.0 + resolution: "find-cache-dir@npm:2.1.0" + dependencies: + commondir: ^1.0.1 + make-dir: ^2.0.0 + pkg-dir: ^3.0.0 + checksum: 60ad475a6da9f257df4e81900f78986ab367d4f65d33cf802c5b91e969c28a8762f098693d7a571b6e4dd4c15166c2da32ae2d18b6766a18e2071079448fdce4 + languageName: node + linkType: hard + +"find-cache-dir@npm:^3.0.0": + version: 3.3.2 + resolution: "find-cache-dir@npm:3.3.2" + dependencies: + commondir: ^1.0.1 + make-dir: ^3.0.2 + pkg-dir: ^4.1.0 + checksum: 1e61c2e64f5c0b1c535bd85939ae73b0e5773142713273818cc0b393ee3555fb0fd44e1a5b161b8b6c3e03e98c2fcc9c227d784850a13a90a8ab576869576817 + languageName: node + linkType: hard + "find-root@npm:^1.1.0": version: 1.1.0 resolution: "find-root@npm:1.1.0" @@ -13620,6 +15448,13 @@ __metadata: languageName: node linkType: hard +"flow-parser@npm:0.*": + version: 0.239.0 + resolution: "flow-parser@npm:0.239.0" + checksum: 20d75183560a901f458878958f8e59c9ca82f118bbb5d265bc67143d4ae6db2b2ee52bc38391d9a4053e623de6ef9c0ca11d24b66cf5b64e5c6ceb873f38192d + languageName: node + linkType: hard + "focus-lock@npm:^0.11.6": version: 0.11.6 resolution: "focus-lock@npm:0.11.6" @@ -13796,7 +15631,7 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^11.1.0, fs-extra@npm:^11.1.1": +"fs-extra@npm:11.1.1, fs-extra@npm:^11.1.0, fs-extra@npm:^11.1.1": version: 11.1.1 resolution: "fs-extra@npm:11.1.1" dependencies: @@ -13978,7 +15813,7 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.3": +"get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.4": version: 1.2.4 resolution: "get-intrinsic@npm:1.2.4" dependencies: @@ -14064,6 +15899,24 @@ __metadata: languageName: node linkType: hard +"giget@npm:^1.0.0": + version: 1.2.3 + resolution: "giget@npm:1.2.3" + dependencies: + citty: ^0.1.6 + consola: ^3.2.3 + defu: ^6.1.4 + node-fetch-native: ^1.6.3 + nypm: ^0.3.8 + ohash: ^1.1.3 + pathe: ^1.1.2 + tar: ^6.2.0 + bin: + giget: dist/cli.mjs + checksum: ec6e9126cb210377b952c090338dee5df0f58f724666318a14a505f1d2c961b91fd1b364b86a038b24a21a5ef44702c9d6841f8726b09aeb88a74720b6b682dd + languageName: node + linkType: hard + "git-hooks-list@npm:1.0.3": version: 1.0.3 resolution: "git-hooks-list@npm:1.0.3" @@ -14078,6 +15931,13 @@ __metadata: languageName: node linkType: hard +"github-slugger@npm:^2.0.0": + version: 2.0.0 + resolution: "github-slugger@npm:2.0.0" + checksum: 250375cde2058f21454872c2c79f72c4637340c30c51ff158ca4ec71cbc478f33d54477d787a662f9207aeb095a2060f155bc01f15329ba8a5fb6698e0fc81f8 + languageName: node + linkType: hard + "gl-matrix@npm:^3.4.3": version: 3.4.3 resolution: "gl-matrix@npm:3.4.3" @@ -14124,18 +15984,19 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2, glob@npm:^10.3.10": - version: 10.3.10 - resolution: "glob@npm:10.3.10" +"glob@npm:^10.0.0, glob@npm:^10.2.2, glob@npm:^10.3.10": + version: 10.4.2 + resolution: "glob@npm:10.4.2" dependencies: foreground-child: ^3.1.0 - jackspeak: ^2.3.5 - minimatch: ^9.0.1 - minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 - path-scurry: ^1.10.1 + jackspeak: ^3.1.2 + minimatch: ^9.0.4 + minipass: ^7.1.2 + package-json-from-dist: ^1.0.0 + path-scurry: ^1.11.1 bin: glob: dist/esm/bin.mjs - checksum: 4f2fe2511e157b5a3f525a54092169a5f92405f24d2aed3142f4411df328baca13059f4182f1db1bf933e2c69c0bd89e57ae87edd8950cba8c7ccbe84f721cf3 + checksum: bd7c0e30701136e936f414e5f6f82c7f04503f01df77408f177aa584927412f0bde0338e6ec541618cd21eacc57dde33e7b3c6c0a779cc1c6e6a0e14f3d15d9b languageName: node linkType: hard @@ -14263,6 +16124,20 @@ __metadata: languageName: node linkType: hard +"globby@npm:^14.0.1": + version: 14.0.2 + resolution: "globby@npm:14.0.2" + dependencies: + "@sindresorhus/merge-streams": ^2.1.0 + fast-glob: ^3.3.2 + ignore: ^5.2.4 + path-type: ^5.0.0 + slash: ^5.1.0 + unicorn-magic: ^0.1.0 + checksum: 2cee79efefca4383a825fc2fcbdb37e5706728f2d39d4b63851927c128fff62e6334ef7d4d467949d411409ad62767dc2d214e0f837a0f6d4b7290b6711d485c + languageName: node + linkType: hard + "globrex@npm:^0.1.2": version: 0.1.2 resolution: "globrex@npm:0.1.2" @@ -14309,7 +16184,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.2, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.2, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 @@ -14323,6 +16198,22 @@ __metadata: languageName: node linkType: hard +"gunzip-maybe@npm:^1.4.2": + version: 1.4.2 + resolution: "gunzip-maybe@npm:1.4.2" + dependencies: + browserify-zlib: ^0.1.4 + is-deflate: ^1.0.0 + is-gzip: ^1.0.0 + peek-stream: ^1.1.0 + pumpify: ^1.3.3 + through2: ^2.0.3 + bin: + gunzip-maybe: bin.js + checksum: bc4d4977c24a2860238df271de75d53dd72a359d19f1248d1c613807dc221d3b8ae09624e3085c8106663e3e1b59db62a85b261d1138c2cc24efad9df577d4e1 + languageName: node + linkType: hard + "handle-thing@npm:^2.0.0": version: 2.0.1 resolution: "handle-thing@npm:2.0.1" @@ -14330,6 +16221,24 @@ __metadata: languageName: node linkType: hard +"handlebars@npm:^4.7.7": + version: 4.7.8 + resolution: "handlebars@npm:4.7.8" + dependencies: + minimist: ^1.2.5 + neo-async: ^2.6.2 + source-map: ^0.6.1 + uglify-js: ^3.1.4 + wordwrap: ^1.0.0 + dependenciesMeta: + uglify-js: + optional: true + bin: + handlebars: bin/handlebars + checksum: 00e68bb5c183fd7b8b63322e6234b5ac8fbb960d712cb3f25587d559c2951d9642df83c04a1172c918c41bcfc81bfbd7a7718bbce93b893e0135fc99edea93ff + languageName: node + linkType: hard + "has-ansi@npm:^2.0.0": version: 2.0.0 resolution: "has-ansi@npm:2.0.0" @@ -14360,12 +16269,12 @@ __metadata: languageName: node linkType: hard -"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.1": - version: 1.0.1 - resolution: "has-property-descriptors@npm:1.0.1" +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" dependencies: - get-intrinsic: ^1.2.2 - checksum: 2bcc6bf6ec6af375add4e4b4ef586e43674850a91ad4d46666d0b28ba8e1fd69e424c7677d24d60f69470ad0afaa2f3197f508b20b0bb7dd99a8ab77ffc4b7c4 + es-define-property: ^1.0.0 + checksum: fcbb246ea2838058be39887935231c6d5788babed499d0e9d0cc5737494c48aba4fe17ba1449e0d0fbbb1e36175442faa37f9c427ae357d6ccb1d895fbcd3de3 languageName: node linkType: hard @@ -14438,6 +16347,33 @@ __metadata: languageName: node linkType: hard +"hast-util-heading-rank@npm:^3.0.0": + version: 3.0.0 + resolution: "hast-util-heading-rank@npm:3.0.0" + dependencies: + "@types/hast": ^3.0.0 + checksum: e5ce4ec9e8017b24ab72702fa0dd401ec6eaf32574120d71c2aa4e8e0f43829dba2e291f49d305a47e8d65b82a9c5adad7985385dc5bc8370f8cec7c8f9313d3 + languageName: node + linkType: hard + +"hast-util-is-element@npm:^3.0.0": + version: 3.0.0 + resolution: "hast-util-is-element@npm:3.0.0" + dependencies: + "@types/hast": ^3.0.0 + checksum: 82569a420eda5877c52fdbbdbe26675f012c02d70813dfd19acffdee328e42e4bd0b7ae34454cfcbcb932b2bedbd7ddc119f943a0cfb234120f9456d6c0c4331 + languageName: node + linkType: hard + +"hast-util-to-string@npm:^3.0.0": + version: 3.0.0 + resolution: "hast-util-to-string@npm:3.0.0" + dependencies: + "@types/hast": ^3.0.0 + checksum: 64f7f4f2b7a69b2ebddd1c87a29eae5f718d593d2154a46de2fa21f6ca8bfbda50ad71a5794f5952ae450f4da23a8bc811db348098b09916b9553cd933aefe9a + languageName: node + linkType: hard + "he@npm:1.2.0, he@npm:^1.2.0": version: 1.2.0 resolution: "he@npm:1.2.0" @@ -15012,6 +16948,13 @@ __metadata: languageName: node linkType: hard +"is-absolute-url@npm:^4.0.0": + version: 4.0.1 + resolution: "is-absolute-url@npm:4.0.1" + checksum: de172a718439982a54477fdae55f21be69ec0e6a4b205db5484975d2f4ee749851fd46c28f3790dfc51a274c2ed1d0f8457b6d1fff02ab829069fd9cc761e48c + languageName: node + linkType: hard + "is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.1": version: 1.1.1 resolution: "is-arguments@npm:1.1.1" @@ -15113,6 +17056,13 @@ __metadata: languageName: node linkType: hard +"is-deflate@npm:^1.0.0": + version: 1.0.0 + resolution: "is-deflate@npm:1.0.0" + checksum: c2f9f2d3db79ac50c5586697d1e69a55282a2b0cc5e437b3c470dd47f24e40b6216dcd7e024511e21381607bf57afa019343e3bd0e08a119032818b596004262 + languageName: node + linkType: hard + "is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": version: 2.2.1 resolution: "is-docker@npm:2.2.1" @@ -15175,6 +17125,13 @@ __metadata: languageName: node linkType: hard +"is-gzip@npm:^1.0.0": + version: 1.0.0 + resolution: "is-gzip@npm:1.0.0" + checksum: 0d28931c1f445fa29c900cf9f48e06e9d1d477a3bf7bd7332e7ce68f1333ccd8cb381de2f0f62a9a262d9c0912608a9a71b4a40e788e201b3dbd67072bb20d86 + languageName: node + linkType: hard + "is-hex-prefixed@npm:1.0.0": version: 1.0.0 resolution: "is-hex-prefixed@npm:1.0.0" @@ -15210,7 +17167,7 @@ __metadata: languageName: node linkType: hard -"is-nan@npm:^1.2.1": +"is-nan@npm:^1.3.2": version: 1.3.2 resolution: "is-nan@npm:1.3.2" dependencies: @@ -15481,6 +17438,13 @@ __metadata: languageName: node linkType: hard +"isomorphic-timers-promises@npm:^1.0.1": + version: 1.0.1 + resolution: "isomorphic-timers-promises@npm:1.0.1" + checksum: 16ef59f0fbcceba1a037c74b5f7195d252ae058724ccd3e53b37ad034e8498f5532084e8ab18e7940ba3fa8fca2f21403d00eed15802ab1f7cab7c099cba62a8 + languageName: node + linkType: hard + "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": version: 3.2.0 resolution: "istanbul-lib-coverage@npm:3.2.0" @@ -15533,16 +17497,16 @@ __metadata: languageName: node linkType: hard -"jackspeak@npm:^2.3.5": - version: 2.3.6 - resolution: "jackspeak@npm:2.3.6" +"jackspeak@npm:^3.1.2": + version: 3.4.0 + resolution: "jackspeak@npm:3.4.0" dependencies: "@isaacs/cliui": ^8.0.2 "@pkgjs/parseargs": ^0.11.0 dependenciesMeta: "@pkgjs/parseargs": optional: true - checksum: 57d43ad11eadc98cdfe7496612f6bbb5255ea69fe51ea431162db302c2a11011642f50cfad57288bd0aea78384a0612b16e131944ad8ecd09d619041c8531b54 + checksum: 350f6f311018bb175ffbe736b19c26ac0b134bb5a17a638169e89594eb0c24ab1c658ab3a2fda24ff63b3b19292e1a5ec19d2255bc526df704e8168d392bef85 languageName: node linkType: hard @@ -16184,6 +18148,41 @@ __metadata: languageName: node linkType: hard +"jscodeshift@npm:^0.15.1": + version: 0.15.2 + resolution: "jscodeshift@npm:0.15.2" + dependencies: + "@babel/core": ^7.23.0 + "@babel/parser": ^7.23.0 + "@babel/plugin-transform-class-properties": ^7.22.5 + "@babel/plugin-transform-modules-commonjs": ^7.23.0 + "@babel/plugin-transform-nullish-coalescing-operator": ^7.22.11 + "@babel/plugin-transform-optional-chaining": ^7.23.0 + "@babel/plugin-transform-private-methods": ^7.22.5 + "@babel/preset-flow": ^7.22.15 + "@babel/preset-typescript": ^7.23.0 + "@babel/register": ^7.22.15 + babel-core: ^7.0.0-bridge.0 + chalk: ^4.1.2 + flow-parser: 0.* + graceful-fs: ^4.2.4 + micromatch: ^4.0.4 + neo-async: ^2.5.0 + node-dir: ^0.1.17 + recast: ^0.23.3 + temp: ^0.8.4 + write-file-atomic: ^2.3.0 + peerDependencies: + "@babel/preset-env": ^7.1.6 + peerDependenciesMeta: + "@babel/preset-env": + optional: true + bin: + jscodeshift: bin/jscodeshift.js + checksum: e3fa018bfd0ee5b65da1b98797a2536ae8ff0185f0c0d11f9be11e27e1f25ab33a4e17cecc8b73ef520e5d9d8dade98abc49bc0835c024a0f1ff14b48288528b + languageName: node + linkType: hard + "jsdoc-type-pratt-parser@npm:~3.1.0": version: 3.1.0 resolution: "jsdoc-type-pratt-parser@npm:3.1.0" @@ -16564,6 +18563,17 @@ __metadata: languageName: node linkType: hard +"lazy-universal-dotenv@npm:^4.0.0": + version: 4.0.0 + resolution: "lazy-universal-dotenv@npm:4.0.0" + dependencies: + app-root-dir: ^1.0.2 + dotenv: ^16.0.0 + dotenv-expand: ^10.0.0 + checksum: 196e0d701100144fbfe078d604a477573413ebf38dfe8d543748605e6a7074978508a3bb9f8135acd319db4fa947eef78836497163617d15a22163c59a00996b + languageName: node + linkType: hard + "lazystream@npm:^1.0.0": version: 1.0.1 resolution: "lazystream@npm:1.0.1" @@ -16938,10 +18948,10 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0": - version: 10.1.0 - resolution: "lru-cache@npm:10.1.0" - checksum: 58056d33e2500fbedce92f8c542e7c11b50d7d086578f14b7074d8c241422004af0718e08a6eaae8705cee09c77e39a61c1c79e9370ba689b7010c152e6a76ab +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": + version: 10.3.0 + resolution: "lru-cache@npm:10.3.0" + checksum: f2289639bd94cf3c87bfd8a77ac991f9afe3af004ddca3548c3dae63ead1c73bba449a60a4e270992e16cf3261b3d4130943234d52ca3a4d4de2fc074a3cc7b5 languageName: node linkType: hard @@ -17021,16 +19031,26 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.0": - version: 0.30.3 - resolution: "magic-string@npm:0.30.3" +"magic-string@npm:^0.30.0, magic-string@npm:^0.30.3": + version: 0.30.10 + resolution: "magic-string@npm:0.30.10" dependencies: "@jridgewell/sourcemap-codec": ^1.4.15 - checksum: a5a9ddf9bd3bf49a2de1048bf358464f1bda7b3cc1311550f4a0ba8f81a4070e25445d53a5ee28850161336f1bff3cf28aa3320c6b4aeff45ce3e689f300b2f3 + checksum: 456fd47c39b296c47dff967e1965121ace35417eab7f45a99e681e725b8661b48e1573c366ee67a27715025b3740773c46b088f115421c7365ea4ea6fa10d399 + languageName: node + linkType: hard + +"make-dir@npm:^2.0.0, make-dir@npm:^2.1.0": + version: 2.1.0 + resolution: "make-dir@npm:2.1.0" + dependencies: + pify: ^4.0.1 + semver: ^5.6.0 + checksum: 043548886bfaf1820323c6a2997e6d2fa51ccc2586ac14e6f14634f7458b4db2daf15f8c310e2a0abd3e0cddc64df1890d8fc7263033602c47bb12cbfcf86aab languageName: node linkType: hard -"make-dir@npm:^3.0.0": +"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2": version: 3.1.0 resolution: "make-dir@npm:3.1.0" dependencies: @@ -17105,6 +19125,13 @@ __metadata: languageName: node linkType: hard +"map-or-similar@npm:^1.5.0": + version: 1.5.0 + resolution: "map-or-similar@npm:1.5.0" + checksum: f65c0d420e272d0fce4e24db35f6a08109218480bca1d61eaa442cbe6cf46270b840218d3b5e94e4bfcc2595f1d0a1fa5885df750b52aac9ab1d437b29dcce38 + languageName: node + linkType: hard + "map-stream@npm:~0.1.0": version: 0.1.0 resolution: "map-stream@npm:0.1.0" @@ -17112,6 +19139,15 @@ __metadata: languageName: node linkType: hard +"markdown-to-jsx@npm:7.3.2": + version: 7.3.2 + resolution: "markdown-to-jsx@npm:7.3.2" + peerDependencies: + react: ">= 0.14.0" + checksum: 8885c6343b71570b0a7ec16cd85a49b853a830234790ee7430e2517ea5d8d361ff138bd52147f650790f3e7b3a28a15c755fc16f8856dd01ddf09a6161782e06 + languageName: node + linkType: hard + "marked@npm:^12.0.1": version: 12.0.1 resolution: "marked@npm:12.0.1" @@ -17148,6 +19184,15 @@ __metadata: languageName: node linkType: hard +"memoizerific@npm:^1.11.3": + version: 1.11.3 + resolution: "memoizerific@npm:1.11.3" + dependencies: + map-or-similar: ^1.5.0 + checksum: d51bdc3ed8c39b4b73845c90eb62d243ddf21899914352d0c303f5e1d477abcb192f4c605e008caa4a31d823225eeb22a99ba5ee825fb88d0c33382db3aee95a + languageName: node + linkType: hard + "merge-deep@npm:3.0.3": version: 3.0.3 resolution: "merge-deep@npm:3.0.3" @@ -17180,6 +19225,13 @@ __metadata: languageName: node linkType: hard +"mersenne-twister@npm:^1.1.0": + version: 1.1.0 + resolution: "mersenne-twister@npm:1.1.0" + checksum: 7de1940ded117f2aad9320ae4d21d647b0ecf0667abbadcfe6a2835c669feb674ef46cb7a72da7af69a56d8b19e50e95e2fb7ef6d780efab7a6acd4d87f4cb2d + languageName: node + linkType: hard + "methods@npm:~1.1.2": version: 1.1.2 resolution: "methods@npm:1.1.2" @@ -17308,7 +19360,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:3.1.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:3.1.2, minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -17344,12 +19396,12 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.0, minimatch@npm:^9.0.1": - version: 9.0.1 - resolution: "minimatch@npm:9.0.1" +"minimatch@npm:^9.0.0, minimatch@npm:^9.0.4": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" dependencies: brace-expansion: ^2.0.1 - checksum: 97f5f5284bb57dc65b9415dec7f17a0f6531a33572193991c60ff18450dcfad5c2dad24ffeaf60b5261dccd63aae58cc3306e2209d57e7f88c51295a532d8ec3 + checksum: 2c035575eda1e50623c731ec6c14f65a85296268f749b9337005210bb2b34e2705f8ef1a358b188f69892286ab99dc42c8fb98a57bde55c8d81b3023c19cea28 languageName: node linkType: hard @@ -17362,7 +19414,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.1.0, minimist@npm:^1.1.1, minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.6": +"minimist@npm:^1.1.0, minimist@npm:^1.1.1, minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 @@ -17460,10 +19512,10 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3": - version: 7.0.4 - resolution: "minipass@npm:7.0.4" - checksum: 87585e258b9488caf2e7acea242fd7856bbe9a2c84a7807643513a338d66f368c7d518200ad7b70a508664d408aa000517647b2930c259a8b1f9f0984f344a21 +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 2bfd325b95c555f2b4d2814d49325691c7bee937d753814861b0b49d5edcda55cbbf22b6b6a60bb91eddac8668771f03c5ff647dcd9d0f798e9548b9cdc46ee3 languageName: node linkType: hard @@ -17521,15 +19573,15 @@ __metadata: languageName: node linkType: hard -"mlly@npm:^1.2.0, mlly@npm:^1.4.0": - version: 1.4.1 - resolution: "mlly@npm:1.4.1" +"mlly@npm:^1.4.0, mlly@npm:^1.7.1": + version: 1.7.1 + resolution: "mlly@npm:1.7.1" dependencies: - acorn: ^8.10.0 - pathe: ^1.1.1 - pkg-types: ^1.0.3 - ufo: ^1.3.0 - checksum: b2b59ab3d70196127be4e54609d2a442bd252345727138940fb245672a238b2fbdd431e8c75ec5c741ff90410ce488c5fd6446d5d3e6476d21dbf4c3fa35d4a0 + acorn: ^8.11.3 + pathe: ^1.1.2 + pkg-types: ^1.1.1 + ufo: ^1.5.3 + checksum: 956a6d54119eef782f302580f63a9800654e588cd70015b4218a00069c6ef11b87984e8ffe140a4668b0100ad4022b11d1f9b11ac2c6dbafa4d8bc33ae3a08a8 languageName: node linkType: hard @@ -17759,7 +19811,7 @@ __metadata: languageName: node linkType: hard -"neo-async@npm:^2.6.2": +"neo-async@npm:^2.5.0, neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9 @@ -17808,6 +19860,15 @@ __metadata: languageName: node linkType: hard +"node-dir@npm:^0.1.17": + version: 0.1.17 + resolution: "node-dir@npm:0.1.17" + dependencies: + minimatch: ^3.0.2 + checksum: 29de9560e52cdac8d3f794d38d782f6799e13d4d11aaf96d3da8c28458e1c5e33bb5f8edfb42dc34172ec5516c50c5b8850c9e1526542616757a969267263328 + languageName: node + linkType: hard + "node-domexception@npm:^1.0.0": version: 1.0.0 resolution: "node-domexception@npm:1.0.0" @@ -17815,7 +19876,14 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.6.11, node-fetch@npm:^2.6.12": +"node-fetch-native@npm:^1.6.3": + version: 1.6.4 + resolution: "node-fetch-native@npm:1.6.4" + checksum: 7b159f610e037e8813750096a6616ec6771e9abf868aa6e75e5b790bfc2ba2d92cf2abcce33c18fd01f2e5e5cc72de09c78bd4381e7f8c0887f7de21bd96f045 + languageName: node + linkType: hard + +"node-fetch@npm:^2.0.0, node-fetch@npm:^2.6.11, node-fetch@npm:^2.6.12": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" dependencies: @@ -17905,10 +19973,45 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.13": - version: 2.0.13 - resolution: "node-releases@npm:2.0.13" - checksum: 17ec8f315dba62710cae71a8dad3cd0288ba943d2ece43504b3b1aa8625bf138637798ab470b1d9035b0545996f63000a8a926e0f6d35d0996424f8b6d36dda3 +"node-releases@npm:^2.0.14": + version: 2.0.14 + resolution: "node-releases@npm:2.0.14" + checksum: 59443a2f77acac854c42d321bf1b43dea0aef55cd544c6a686e9816a697300458d4e82239e2d794ea05f7bbbc8a94500332e2d3ac3f11f52e4b16cbe638b3c41 + languageName: node + linkType: hard + +"node-stdlib-browser@npm:^1.2.0": + version: 1.2.0 + resolution: "node-stdlib-browser@npm:1.2.0" + dependencies: + assert: ^2.0.0 + browser-resolve: ^2.0.0 + browserify-zlib: ^0.2.0 + buffer: ^5.7.1 + console-browserify: ^1.1.0 + constants-browserify: ^1.0.0 + create-require: ^1.1.1 + crypto-browserify: ^3.11.0 + domain-browser: ^4.22.0 + events: ^3.0.0 + https-browserify: ^1.0.0 + isomorphic-timers-promises: ^1.0.1 + os-browserify: ^0.3.0 + path-browserify: ^1.0.1 + pkg-dir: ^5.0.0 + process: ^0.11.10 + punycode: ^1.4.1 + querystring-es3: ^0.2.1 + readable-stream: ^3.6.0 + stream-browserify: ^3.0.0 + stream-http: ^3.2.0 + string_decoder: ^1.0.0 + timers-browserify: ^2.0.4 + tty-browserify: 0.0.1 + url: ^0.11.0 + util: ^0.12.4 + vm-browserify: ^1.0.1 + checksum: fe491f0839319fd9bb95964c6f7da81fc7fde4c3ac9062aa367f19bc5a6060d0d9e423d3de4196cb51f8259d6aaf6cf380048c48a86eb3721c6223dd0dcc5bfd languageName: node linkType: hard @@ -17934,7 +20037,7 @@ __metadata: languageName: node linkType: hard -"normalize-package-data@npm:^2.3.2": +"normalize-package-data@npm:^2.3.2, normalize-package-data@npm:^2.5.0": version: 2.5.0 resolution: "normalize-package-data@npm:2.5.0" dependencies: @@ -18058,6 +20161,22 @@ __metadata: languageName: node linkType: hard +"nypm@npm:^0.3.8": + version: 0.3.9 + resolution: "nypm@npm:0.3.9" + dependencies: + citty: ^0.1.6 + consola: ^3.2.3 + execa: ^8.0.1 + pathe: ^1.1.2 + pkg-types: ^1.1.1 + ufo: ^1.5.3 + bin: + nypm: dist/cli.mjs + checksum: 67fb85384d097fa281047d8dccc23bff4a4ffd7be8952c575c3ceda1b3bbc1401b8e0660d7a0f742b80e8b63f097d040dbba410cae4b94b8cad6a66e94ad8710 + languageName: node + linkType: hard + "object-assign@npm:^4.0.1, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" @@ -18065,14 +20184,14 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.12.0, object-inspect@npm:^1.12.2, object-inspect@npm:^1.9.0": - version: 1.12.2 - resolution: "object-inspect@npm:1.12.2" - checksum: a534fc1b8534284ed71f25ce3a496013b7ea030f3d1b77118f6b7b1713829262be9e6243acbcb3ef8c626e2b64186112cb7f6db74e37b2789b9c789ca23048b2 +"object-inspect@npm:^1.12.0, object-inspect@npm:^1.12.2, object-inspect@npm:^1.13.1": + version: 1.13.2 + resolution: "object-inspect@npm:1.13.2" + checksum: 9f850b3c045db60e0e97746e809ee4090d6ce62195af17dd1e9438ac761394a7d8ec4f7906559aea5424eaf61e35d3e53feded2ccd5f62fcc7d9670d3c8eb353 languageName: node linkType: hard -"object-is@npm:^1.0.1, object-is@npm:^1.1.5": +"object-is@npm:^1.1.5": version: 1.1.5 resolution: "object-is@npm:1.1.5" dependencies: @@ -18151,6 +20270,13 @@ __metadata: languageName: node linkType: hard +"ohash@npm:^1.1.3": + version: 1.1.3 + resolution: "ohash@npm:1.1.3" + checksum: 44c7321cb950ce6e87d46584fd5cc8dd3dd15fcd4ade0ac2995d0497dc6b6b1ae9bd844c59af185d63923da5cfe9b37ae37a9dbd9ac455f3ad0cdfb5a73d5ef6 + languageName: node + linkType: hard + "on-finished@npm:2.4.1": version: 2.4.1 resolution: "on-finished@npm:2.4.1" @@ -18203,7 +20329,7 @@ __metadata: languageName: node linkType: hard -"open@npm:^8.0.9": +"open@npm:^8.0.4, open@npm:^8.0.9, open@npm:^8.4.0": version: 8.4.2 resolution: "open@npm:8.4.2" dependencies: @@ -18381,6 +20507,20 @@ __metadata: languageName: node linkType: hard +"package-json-from-dist@npm:^1.0.0": + version: 1.0.0 + resolution: "package-json-from-dist@npm:1.0.0" + checksum: ac706ec856a5a03f5261e4e48fa974f24feb044d51f84f8332e2af0af04fbdbdd5bbbfb9cbbe354190409bc8307c83a9e38c6672c3c8855f709afb0006a009ea + languageName: node + linkType: hard + +"pako@npm:~0.2.0": + version: 0.2.9 + resolution: "pako@npm:0.2.9" + checksum: 055f9487cd57fbb78df84315873bbdd089ba286f3499daed47d2effdc6253e981f5db6898c23486de76d4a781559f890d643bd3a49f70f1b4a18019c98aa5125 + languageName: node + linkType: hard + "pako@npm:~1.0.5": version: 1.0.11 resolution: "pako@npm:1.0.11" @@ -18591,13 +20731,13 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^1.10.1": - version: 1.10.1 - resolution: "path-scurry@npm:1.10.1" +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" dependencies: - lru-cache: ^9.1.1 || ^10.0.0 + lru-cache: ^10.2.0 minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 - checksum: e2557cff3a8fb8bc07afdd6ab163a92587884f9969b05bbbaf6fe7379348bfb09af9ed292af12ed32398b15fb443e81692047b786d1eeb6d898a51eb17ed7d90 + checksum: 890d5abcd593a7912dcce7cf7c6bf7a0b5648e3dee6caf0712c126ca0a65c7f3d7b9d769072a4d1baf370f61ce493ab5b038d59988688e0c5f3f646ee3c69023 languageName: node linkType: hard @@ -18633,10 +20773,17 @@ __metadata: languageName: node linkType: hard -"pathe@npm:^1.1.0, pathe@npm:^1.1.1": - version: 1.1.1 - resolution: "pathe@npm:1.1.1" - checksum: 34ab3da2e5aa832ebc6a330ffe3f73d7ba8aec6e899b53b8ec4f4018de08e40742802deb12cf5add9c73b7bf719b62c0778246bd376ca62b0fb23e0dde44b759 +"path-type@npm:^5.0.0": + version: 5.0.0 + resolution: "path-type@npm:5.0.0" + checksum: 15ec24050e8932c2c98d085b72cfa0d6b4eeb4cbde151a0a05726d8afae85784fc5544f733d8dfc68536587d5143d29c0bd793623fad03d7e61cc00067291cd5 + languageName: node + linkType: hard + +"pathe@npm:^1.1.2": + version: 1.1.2 + resolution: "pathe@npm:1.1.2" + checksum: ec5f778d9790e7b9ffc3e4c1df39a5bb1ce94657a4e3ad830c1276491ca9d79f189f47609884671db173400256b005f4955f7952f52a2aeb5834ad5fb4faf134 languageName: node linkType: hard @@ -18662,6 +20809,17 @@ __metadata: languageName: node linkType: hard +"peek-stream@npm:^1.1.0": + version: 1.1.3 + resolution: "peek-stream@npm:1.1.3" + dependencies: + buffer-from: ^1.0.0 + duplexify: ^3.5.0 + through2: ^2.0.3 + checksum: a0e09d6d1a8a01158a3334f20d6b1cdd91747eba24eb06a1d742eefb620385593121a76d4378cc81f77cdce6a66df0575a41041b1189c510254aec91878afc99 + languageName: node + linkType: hard + "pend@npm:~1.2.0": version: 1.2.0 resolution: "pend@npm:1.2.0" @@ -18669,14 +20827,14 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0": - version: 1.0.0 - resolution: "picocolors@npm:1.0.0" - checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 +"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1": + version: 1.0.1 + resolution: "picocolors@npm:1.0.1" + checksum: fa68166d1f56009fc02a34cdfd112b0dd3cf1ef57667ac57281f714065558c01828cdf4f18600ad6851cbe0093952ed0660b1e0156bddf2184b6aaf5817553a5 languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.0, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf @@ -18706,6 +20864,13 @@ __metadata: languageName: node linkType: hard +"pify@npm:^4.0.1": + version: 4.0.1 + resolution: "pify@npm:4.0.1" + checksum: 9c4e34278cb09987685fa5ef81499c82546c033713518f6441778fbec623fc708777fe8ac633097c72d88470d5963094076c7305cafc7ad340aae27cfacd856b + languageName: node + linkType: hard + "pinkie-promise@npm:^2.0.0": version: 2.0.1 resolution: "pinkie-promise@npm:2.0.1" @@ -18722,14 +20887,23 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.1, pirates@npm:^4.0.4": +"pirates@npm:^4.0.1, pirates@npm:^4.0.4, pirates@npm:^4.0.6": version: 4.0.6 resolution: "pirates@npm:4.0.6" checksum: 46a65fefaf19c6f57460388a5af9ab81e3d7fd0e7bc44ca59d753cb5c4d0df97c6c6e583674869762101836d68675f027d60f841c105d72734df9dfca97cbcc6 languageName: node linkType: hard -"pkg-dir@npm:^4.2.0": +"pkg-dir@npm:^3.0.0": + version: 3.0.0 + resolution: "pkg-dir@npm:3.0.0" + dependencies: + find-up: ^3.0.0 + checksum: 70c9476ffefc77552cc6b1880176b71ad70bfac4f367604b2b04efd19337309a4eec985e94823271c7c0e83946fa5aeb18cd360d15d10a5d7533e19344bfa808 + languageName: node + linkType: hard + +"pkg-dir@npm:^4.1.0, pkg-dir@npm:^4.2.0": version: 4.2.0 resolution: "pkg-dir@npm:4.2.0" dependencies: @@ -18738,14 +20912,23 @@ __metadata: languageName: node linkType: hard -"pkg-types@npm:^1.0.3": - version: 1.0.3 - resolution: "pkg-types@npm:1.0.3" +"pkg-dir@npm:^5.0.0": + version: 5.0.0 + resolution: "pkg-dir@npm:5.0.0" dependencies: - jsonc-parser: ^3.2.0 - mlly: ^1.2.0 - pathe: ^1.1.0 - checksum: 4b305c834b912ddcc8a0fe77530c0b0321fe340396f84cbb87aecdbc126606f47f2178f23b8639e71a4870f9631c7217aef52ffed0ae17ea2dbbe7e43d116a6e + find-up: ^5.0.0 + checksum: b167bb8dac7bbf22b1d5e30ec223e6b064b84b63010c9d49384619a36734caf95ed23ad23d4f9bd975e8e8082b60a83395f43a89bb192df53a7c25a38ecb57d9 + languageName: node + linkType: hard + +"pkg-types@npm:^1.1.1": + version: 1.1.3 + resolution: "pkg-types@npm:1.1.3" + dependencies: + confbox: ^0.1.7 + mlly: ^1.7.1 + pathe: ^1.1.2 + checksum: 1085f1ed650db71d62ec9201d0ad4dc9455962b0e40d309e26bb8c01bb5b1560087e44d49e8e034497668c7cdde7cb5397995afa79c9fa1e2b35af9c9abafa82 languageName: node linkType: hard @@ -18767,6 +20950,15 @@ __metadata: languageName: node linkType: hard +"polished@npm:^4.2.2": + version: 4.3.1 + resolution: "polished@npm:4.3.1" + dependencies: + "@babel/runtime": ^7.17.8 + checksum: a6f863c23f1d2f3f5cda3427b5885c9fb9e83b036d681e24820b143c7df40d2685bebb01c0939767120a28e1183671ae17c93db82ac30b3c20942180bb153bc7 + languageName: node + linkType: hard + "pony-cause@npm:^2.1.10, pony-cause@npm:^2.1.9": version: 2.1.10 resolution: "pony-cause@npm:2.1.10" @@ -18905,6 +21097,15 @@ __metadata: languageName: node linkType: hard +"prettier-fallback@npm:prettier@^3, prettier@npm:^3.1.1": + version: 3.3.2 + resolution: "prettier@npm:3.3.2" + bin: + prettier: bin/prettier.cjs + checksum: 5557d8caed0b182f68123c2e1e370ef105251d1dd75800fadaece3d061daf96b1389141634febf776050f9d732c7ae8fd444ff0b4a61b20535e7610552f32c69 + languageName: node + linkType: hard + "prettier-linter-helpers@npm:^1.0.0": version: 1.0.0 resolution: "prettier-linter-helpers@npm:1.0.0" @@ -18966,6 +21167,13 @@ __metadata: languageName: node linkType: hard +"pretty-hrtime@npm:^1.0.3": + version: 1.0.3 + resolution: "pretty-hrtime@npm:1.0.3" + checksum: bae0e6832fe13c3de43d1a3d43df52bf6090499d74dc65a17f5552cb1a94f1f8019a23284ddf988c3c408a09678d743901e1d8f5b7a71bec31eeeac445bef371 + languageName: node + linkType: hard + "pretty-ms@npm:^7.0.0": version: 7.0.1 resolution: "pretty-ms@npm:7.0.1" @@ -19027,13 +21235,13 @@ __metadata: languageName: node linkType: hard -"prompts@npm:^2.0.1": - version: 2.4.1 - resolution: "prompts@npm:2.4.1" +"prompts@npm:^2.0.1, prompts@npm:^2.4.0": + version: 2.4.2 + resolution: "prompts@npm:2.4.2" dependencies: kleur: ^3.0.3 sisteransi: ^1.0.5 - checksum: 05bf4865870665067b14fc54ced6c96e353f58f57658351e16bb8c12c017402582696fb42d97306b7c98efc0e2cc1ebf27ab573448d5a5da2ac18991cc9e4cad + checksum: d8fd1fe63820be2412c13bfc5d0a01909acc1f0367e32396962e737cb2fc52d004f3302475d5ce7d18a1e8a79985f93ff04ee03007d091029c3f9104bffc007d languageName: node linkType: hard @@ -19148,6 +21356,16 @@ __metadata: languageName: node linkType: hard +"pump@npm:^2.0.0": + version: 2.0.1 + resolution: "pump@npm:2.0.1" + dependencies: + end-of-stream: ^1.1.0 + once: ^1.3.1 + checksum: e9f26a17be00810bff37ad0171edb35f58b242487b0444f92fb7d78bc7d61442fa9b9c5bd93a43fd8fd8ddd3cc75f1221f5e04c790f42907e5baab7cf5e2b931 + languageName: node + linkType: hard + "pump@npm:^3.0.0": version: 3.0.0 resolution: "pump@npm:3.0.0" @@ -19158,6 +21376,17 @@ __metadata: languageName: node linkType: hard +"pumpify@npm:^1.3.3": + version: 1.5.1 + resolution: "pumpify@npm:1.5.1" + dependencies: + duplexify: ^3.6.0 + inherits: ^2.0.3 + pump: ^2.0.0 + checksum: 26ca412ec8d665bd0d5e185c1b8f627728eff603440d75d22a58e421e3c66eaf86ec6fc6a6efc54808ecef65979279fa8e99b109a23ec1fa8d79f37e6978c9bd + languageName: node + linkType: hard + "punycode@npm:2.1.0": version: 2.1.0 resolution: "punycode@npm:2.1.0" @@ -19214,12 +21443,12 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.11.0": - version: 6.11.2 - resolution: "qs@npm:6.11.2" +"qs@npm:^6.10.0, qs@npm:^6.11.2": + version: 6.12.2 + resolution: "qs@npm:6.12.2" dependencies: - side-channel: ^1.0.4 - checksum: e812f3c590b2262548647d62f1637b6989cc56656dc960b893fe2098d96e1bd633f36576f4cd7564dfbff9db42e17775884db96d846bebe4f37420d073ecdc0b + side-channel: ^1.0.6 + checksum: cb141456f3e518b4212177f5658168acbab60c90735f27f131336f7ae0286b51402911d4a0a786d83d3ba4aa801c032383b4304b28474de00388eb95cf988c8c languageName: node linkType: hard @@ -19258,6 +21487,13 @@ __metadata: languageName: node linkType: hard +"ramda@npm:0.29.0": + version: 0.29.0 + resolution: "ramda@npm:0.29.0" + checksum: 9ab26c06eb7545cbb7eebcf75526d6ee2fcaae19e338f165b2bf32772121e7b28192d6664d1ba222ff76188ba26ab307342d66e805dbb02c860560adc4d5dd57 + languageName: node + linkType: hard + "randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.1.0": version: 2.1.0 resolution: "randombytes@npm:2.1.0" @@ -19355,6 +21591,16 @@ __metadata: languageName: node linkType: hard +"react-colorful@npm:^5.1.2": + version: 5.6.1 + resolution: "react-colorful@npm:5.6.1" + peerDependencies: + react: ">=16.8.0" + react-dom: ">=16.8.0" + checksum: e432b7cb0df57e8f0bcdc3b012d2e93fcbcb6092c9e0f85654788d5ebfc4442536d8cc35b2418061ba3c4afb8b7788cc101c606d86a1732407921de7a9244c8d + languageName: node + linkType: hard + "react-dnd-html5-backend@npm:^16.0.1": version: 16.0.1 resolution: "react-dnd-html5-backend@npm:16.0.1" @@ -19399,15 +21645,15 @@ __metadata: languageName: node linkType: hard -"react-dom@npm:^18.2.0": - version: 18.2.0 - resolution: "react-dom@npm:18.2.0" +"react-dom@npm:^16.8.0 || ^17.0.0 || ^18.0.0, react-dom@npm:^18.2.0": + version: 18.3.1 + resolution: "react-dom@npm:18.3.1" dependencies: loose-envify: ^1.1.0 - scheduler: ^0.23.0 + scheduler: ^0.23.2 peerDependencies: - react: ^18.2.0 - checksum: 7d323310bea3a91be2965f9468d552f201b1c27891e45ddc2d6b8f717680c95a75ae0bc1e3f5cf41472446a2589a75aed4483aee8169287909fcd59ad149e8cc + react: ^18.3.1 + checksum: 298954ecd8f78288dcaece05e88b570014d8f6dce5db6f66e6ee91448debeb59dcd31561dddb354eee47e6c1bb234669459060deb238ed0213497146e555a0b9 languageName: node linkType: hard @@ -19543,9 +21789,9 @@ __metadata: languageName: node linkType: hard -"react-remove-scroll@npm:^2.5.5": - version: 2.5.6 - resolution: "react-remove-scroll@npm:2.5.6" +"react-remove-scroll@npm:2.5.7, react-remove-scroll@npm:^2.5.5": + version: 2.5.7 + resolution: "react-remove-scroll@npm:2.5.7" dependencies: react-remove-scroll-bar: ^2.3.4 react-style-singleton: ^2.2.1 @@ -19558,7 +21804,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 0a31f822136f4d4cde0c34264b68dd3a0432d36e2ca5162cd2df0f205980debb9a5e107843120220a599275af02df7805f0d5f44e54f2bd8b0c39a7fdd304036 + checksum: e0dbb6856beaed2cff4996d9ca62d775686ff72e3e9de34043034d932223b588993b2fc7a18644750dd3d73eb19bd3f2cedb8d91f0e424c1ef8403010da24b1d languageName: node linkType: hard @@ -19630,12 +21876,12 @@ __metadata: languageName: node linkType: hard -"react@npm:^18.2.0": - version: 18.2.0 - resolution: "react@npm:18.2.0" +"react@npm:^16.8.0 || ^17.0.0 || ^18.0.0, react@npm:^18.2.0": + version: 18.3.1 + resolution: "react@npm:18.3.1" dependencies: loose-envify: ^1.1.0 - checksum: 88e38092da8839b830cda6feef2e8505dec8ace60579e46aa5490fc3dc9bba0bd50336507dc166f43e3afc1c42939c09fe33b25fae889d6f402721dcd78fca1b + checksum: a27bcfa8ff7c15a1e50244ad0d0c1cb2ad4375eeffefd266a64889beea6f6b64c4966c9b37d14ee32d6c9fcd5aa6ba183b6988167ab4d127d13e7cb5b386a376 languageName: node linkType: hard @@ -19676,6 +21922,17 @@ __metadata: languageName: node linkType: hard +"read-pkg-up@npm:^7.0.1": + version: 7.0.1 + resolution: "read-pkg-up@npm:7.0.1" + dependencies: + find-up: ^4.1.0 + read-pkg: ^5.2.0 + type-fest: ^0.8.1 + checksum: e4e93ce70e5905b490ca8f883eb9e48b5d3cebc6cd4527c25a0d8f3ae2903bd4121c5ab9c5a3e217ada0141098eeb661313c86fa008524b089b8ed0b7f165e44 + languageName: node + linkType: hard + "read-pkg@npm:^1.0.0": version: 1.1.0 resolution: "read-pkg@npm:1.1.0" @@ -19687,6 +21944,18 @@ __metadata: languageName: node linkType: hard +"read-pkg@npm:^5.2.0": + version: 5.2.0 + resolution: "read-pkg@npm:5.2.0" + dependencies: + "@types/normalize-package-data": ^2.4.0 + normalize-package-data: ^2.5.0 + parse-json: ^5.0.0 + type-fest: ^0.6.0 + checksum: eb696e60528b29aebe10e499ba93f44991908c57d70f2d26f369e46b8b9afc208ef11b4ba64f67630f31df8b6872129e0a8933c8c53b7b4daf0eace536901222 + languageName: node + linkType: hard + "read-pkg@npm:^8.1.0": version: 8.1.0 resolution: "read-pkg@npm:8.1.0" @@ -19710,9 +21979,9 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.5, readable-stream@npm:^2.2.2, readable-stream@npm:~2.3.6": - version: 2.3.7 - resolution: "readable-stream@npm:2.3.7" +"readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.5, readable-stream@npm:^2.2.2, readable-stream@npm:~2.3.6": + version: 2.3.8 + resolution: "readable-stream@npm:2.3.8" dependencies: core-util-is: ~1.0.0 inherits: ~2.0.3 @@ -19721,7 +21990,7 @@ __metadata: safe-buffer: ~5.1.1 string_decoder: ~1.1.1 util-deprecate: ~1.0.1 - checksum: e4920cf7549a60f8aaf694d483a0e61b2a878b969d224f89b3bc788b8d920075132c4b55a7494ee944c7b6a9a0eada28a7f6220d80b0312ece70bbf08eeca755 + checksum: 65645467038704f0c8aaf026a72fbb588a9e2ef7a75cd57a01702ee9db1c4a1e4b03aaad36861a6a0926546a74d174149c8c207527963e0c2d3eee2f37678a42 languageName: node linkType: hard @@ -19765,16 +22034,16 @@ __metadata: languageName: node linkType: hard -"recast@npm:^0.23.2": - version: 0.23.4 - resolution: "recast@npm:0.23.4" +"recast@npm:^0.23.2, recast@npm:^0.23.3, recast@npm:^0.23.5": + version: 0.23.9 + resolution: "recast@npm:0.23.9" dependencies: - assert: ^2.0.0 ast-types: ^0.16.1 esprima: ~4.0.0 source-map: ~0.6.1 + tiny-invariant: ^1.3.3 tslib: ^2.0.1 - checksum: edb63bbe0457e68c0f4892f55413000e92aa7c5c53f9e109ab975d1c801cd299a62511ea72734435791f4aea6f0edf560f6a275761f66b2b6069ff6d72686029 + checksum: be8e896a46b24e30fbeafcd111ff3beaf2b5532d241c199f833fe1c18e89f695b2704cf83f3006fa96a785851019031de0de50bd3e0fd7bb114be18bf2cad900 languageName: node linkType: hard @@ -19854,10 +22123,10 @@ __metadata: languageName: node linkType: hard -"regenerator-runtime@npm:^0.13.11": - version: 0.13.11 - resolution: "regenerator-runtime@npm:0.13.11" - checksum: 27481628d22a1c4e3ff551096a683b424242a216fee44685467307f14d58020af1e19660bf2e26064de946bad7eff28950eae9f8209d55723e2d9351e632bbb4 +"regenerator-runtime@npm:^0.14.0": + version: 0.14.1 + resolution: "regenerator-runtime@npm:0.14.1" + checksum: 9f57c93277b5585d3c83b0cf76be47b473ae8c6d9142a46ce8b0291a04bb2cf902059f0f8445dcabb3fb7378e5fe4bb4ea1e008876343d42e46d3b484534ce38 languageName: node linkType: hard @@ -19913,6 +22182,33 @@ __metadata: languageName: node linkType: hard +"rehype-external-links@npm:^3.0.0": + version: 3.0.0 + resolution: "rehype-external-links@npm:3.0.0" + dependencies: + "@types/hast": ^3.0.0 + "@ungap/structured-clone": ^1.0.0 + hast-util-is-element: ^3.0.0 + is-absolute-url: ^4.0.0 + space-separated-tokens: ^2.0.0 + unist-util-visit: ^5.0.0 + checksum: f776f306a2698a67b03665280fcc00448a5bf59b997d83fbb70fc3d71acff2c3025c70ee1840f48ca7dff209217ebe9adad085dc7caf9e5907badf8b104898b6 + languageName: node + linkType: hard + +"rehype-slug@npm:^6.0.0": + version: 6.0.0 + resolution: "rehype-slug@npm:6.0.0" + dependencies: + "@types/hast": ^3.0.0 + github-slugger: ^2.0.0 + hast-util-heading-rank: ^3.0.0 + hast-util-to-string: ^3.0.0 + unist-util-visit: ^5.0.0 + checksum: 0e13ec558eb142d14a6daeab21bbef7c9230bfabec45987e15a24283650226eae3898ad162b8cb29ee39a8bce536bcc013eeab7dc6faa0295b0e91612a8c9f6e + languageName: node + linkType: hard + "relateurl@npm:^0.2.7": version: 0.2.7 resolution: "relateurl@npm:0.2.7" @@ -20161,6 +22457,17 @@ __metadata: languageName: node linkType: hard +"rimraf@npm:~2.6.2": + version: 2.6.3 + resolution: "rimraf@npm:2.6.3" + dependencies: + glob: ^7.1.3 + bin: + rimraf: ./bin.js + checksum: 3ea587b981a19016297edb96d1ffe48af7e6af69660e3b371dbfc73722a73a0b0e9be5c88089fbeeb866c389c1098e07f64929c7414290504b855f54f901ab10 + languageName: node + linkType: hard + "ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1": version: 2.0.2 resolution: "ripemd160@npm:2.0.2" @@ -20418,12 +22725,12 @@ __metadata: languageName: node linkType: hard -"scheduler@npm:^0.23.0": - version: 0.23.0 - resolution: "scheduler@npm:0.23.0" +"scheduler@npm:^0.23.2": + version: 0.23.2 + resolution: "scheduler@npm:0.23.2" dependencies: loose-envify: ^1.1.0 - checksum: d79192eeaa12abef860c195ea45d37cbf2bbf5f66e3c4dcd16f54a7da53b17788a70d109ee3d3dde1a0fd50e6a8fc171f4300356c5aee4fc0171de526bf35f8a + checksum: 3e82d1f419e240ef6219d794ff29c7ee415fbdc19e038f680a10c067108e06284f1847450a210b29bbaf97b9d8a97ced5f624c31c681248ac84c80d56ad5a2c4 languageName: node linkType: hard @@ -20473,7 +22780,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:2 || 3 || 4 || 5": +"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.6.0": version: 5.7.2 resolution: "semver@npm:5.7.2" bin: @@ -20609,17 +22916,17 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.2.0": - version: 1.2.1 - resolution: "set-function-length@npm:1.2.1" +"set-function-length@npm:^1.2.1": + version: 1.2.2 + resolution: "set-function-length@npm:1.2.2" dependencies: - define-data-property: ^1.1.2 + define-data-property: ^1.1.4 es-errors: ^1.3.0 function-bind: ^1.1.2 - get-intrinsic: ^1.2.3 + get-intrinsic: ^1.2.4 gopd: ^1.0.1 - has-property-descriptors: ^1.0.1 - checksum: 23742476d695f2eae86348c069bd164d4f25fa7c26546a46a2b5f370f1f84b98ec64366d2cd17785d5b41bbf16b95855da4b7eb188e7056fe3b0248d61f6afda + has-property-descriptors: ^1.0.2 + checksum: a8248bdacdf84cb0fab4637774d9fb3c7a8e6089866d04c817583ff48e14149c87044ce683d7f50759a8c50fb87c7a7e173535b06169c87ef76f5fb276dfff72 languageName: node linkType: hard @@ -20726,14 +23033,15 @@ __metadata: languageName: node linkType: hard -"side-channel@npm:^1.0.4": - version: 1.0.4 - resolution: "side-channel@npm:1.0.4" +"side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": + version: 1.0.6 + resolution: "side-channel@npm:1.0.6" dependencies: - call-bind: ^1.0.0 - get-intrinsic: ^1.0.2 - object-inspect: ^1.9.0 - checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 + call-bind: ^1.0.7 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.4 + object-inspect: ^1.13.1 + checksum: bfc1afc1827d712271453e91b7cd3878ac0efd767495fd4e594c4c2afaa7963b7b510e249572bfd54b0527e66e4a12b61b80c061389e129755f34c493aad9b97 languageName: node linkType: hard @@ -20815,6 +23123,13 @@ __metadata: languageName: node linkType: hard +"slash@npm:^5.1.0": + version: 5.1.0 + resolution: "slash@npm:5.1.0" + checksum: 70434b34c50eb21b741d37d455110258c42d2cf18c01e6518aeb7299f3c6e626330c889c0c552b5ca2ef54a8f5a74213ab48895f0640717cacefeef6830a1ba4 + languageName: node + linkType: hard + "slice-ansi@npm:^3.0.0": version: 3.0.0 resolution: "slice-ansi@npm:3.0.0" @@ -20944,7 +23259,7 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:^0.5.21, source-map-support@npm:~0.5.20": +"source-map-support@npm:^0.5.16, source-map-support@npm:^0.5.21, source-map-support@npm:~0.5.20": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" dependencies: @@ -20991,6 +23306,13 @@ __metadata: languageName: node linkType: hard +"space-separated-tokens@npm:^2.0.0": + version: 2.0.2 + resolution: "space-separated-tokens@npm:2.0.2" + checksum: 202e97d7ca1ba0758a0aa4fe226ff98142073bcceeff2da3aad037968878552c3bbce3b3231970025375bbba5aee00c5b8206eda408da837ab2dc9c0f26be990 + languageName: node + linkType: hard + "spdx-correct@npm:^3.0.0": version: 3.1.1 resolution: "spdx-correct@npm:3.1.1" @@ -21139,6 +23461,25 @@ __metadata: languageName: node linkType: hard +"store2@npm:^2.14.2": + version: 2.14.3 + resolution: "store2@npm:2.14.3" + checksum: 971a47aa479ff5491f89ee3fcbaf4ddafe0cfb55ac2f4cf4b4fc7b21d349fa3a761f79368d1573b9f65af08b3cf0f6973eed56a213b8bb4cb7e820ac048d1613 + languageName: node + linkType: hard + +"storybook@npm:^8.1.11": + version: 8.1.11 + resolution: "storybook@npm:8.1.11" + dependencies: + "@storybook/cli": 8.1.11 + bin: + sb: ./index.js + storybook: ./index.js + checksum: b3fdf0bd980759a347bb19e34f06a954f09250bbde2ae6411d77b3154973f177d231e1a870a8111dae67886e4eb2ca4c9b763356510f07574d7ad378c5de6e82 + languageName: node + linkType: hard + "stream-browserify@npm:^3.0.0": version: 3.0.0 resolution: "stream-browserify@npm:3.0.0" @@ -21298,7 +23639,7 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": +"string_decoder@npm:^1.0.0, string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" dependencies: @@ -21389,7 +23730,7 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:3.1.1, strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:3.1.1, strip-json-comments@npm:^3.0.1, strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 @@ -21569,7 +23910,7 @@ __metadata: languageName: node linkType: hard -"tar-fs@npm:^2.0.0": +"tar-fs@npm:^2.0.0, tar-fs@npm:^2.1.1": version: 2.1.1 resolution: "tar-fs@npm:2.1.1" dependencies: @@ -21605,7 +23946,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.1.11, tar@npm:^6.1.2": +"tar@npm:^6.1.11, tar@npm:^6.1.2, tar@npm:^6.2.0": version: 6.2.1 resolution: "tar@npm:6.2.1" dependencies: @@ -21629,6 +23970,43 @@ __metadata: languageName: node linkType: hard +"telejson@npm:^7.2.0": + version: 7.2.0 + resolution: "telejson@npm:7.2.0" + dependencies: + memoizerific: ^1.11.3 + checksum: 55a3380c9ff3c5ad84581bb6bda28fc33c6b7c4a0c466894637da687639b8db0d21b0ff4c1bc1a7a92ae6b70662549d09e7b9e8b1ec334b2ef93078762ecdfb9 + languageName: node + linkType: hard + +"temp-dir@npm:^3.0.0": + version: 3.0.0 + resolution: "temp-dir@npm:3.0.0" + checksum: 577211e995d1d584dd60f1469351d45e8a5b4524e4a9e42d3bdd12cfde1d0bb8f5898311bef24e02aaafb69514c1feb58c7b4c33dcec7129da3b0861a4ca935b + languageName: node + linkType: hard + +"temp@npm:^0.8.4": + version: 0.8.4 + resolution: "temp@npm:0.8.4" + dependencies: + rimraf: ~2.6.2 + checksum: f35bed78565355dfdf95f730b7b489728bd6b7e35071bcc6497af7c827fb6c111fbe9063afc7b8cbc19522a072c278679f9a0ee81e684aa2c8617cc0f2e9c191 + languageName: node + linkType: hard + +"tempy@npm:^3.1.0": + version: 3.1.0 + resolution: "tempy@npm:3.1.0" + dependencies: + is-stream: ^3.0.0 + temp-dir: ^3.0.0 + type-fest: ^2.12.2 + unique-string: ^3.0.0 + checksum: c4ee8ce7700c6d0652f0828f15f7628e599e57f34352a7fe82abf8f1ebc36f10a5f83861b6c60cce55c321d8f7861d1fecbd9fb4c00de55bf460390bea42f7da + languageName: node + linkType: hard + "terser-webpack-plugin@npm:^5.3.7, terser-webpack-plugin@npm:^5.3.9": version: 5.3.9 resolution: "terser-webpack-plugin@npm:5.3.9" @@ -21710,7 +24088,7 @@ __metadata: languageName: node linkType: hard -"through2@npm:^2.0.0": +"through2@npm:^2.0.0, through2@npm:^2.0.3": version: 2.0.5 resolution: "through2@npm:2.0.5" dependencies: @@ -21743,7 +24121,7 @@ __metadata: languageName: node linkType: hard -"timers-browserify@npm:^2.0.12": +"timers-browserify@npm:^2.0.12, timers-browserify@npm:^2.0.4": version: 2.0.12 resolution: "timers-browserify@npm:2.0.12" dependencies: @@ -21752,10 +24130,10 @@ __metadata: languageName: node linkType: hard -"tiny-invariant@npm:^1.0.6": - version: 1.3.1 - resolution: "tiny-invariant@npm:1.3.1" - checksum: 872dbd1ff20a21303a2fd20ce3a15602cfa7fcf9b228bd694a52e2938224313b5385a1078cb667ed7375d1612194feaca81c4ecbe93121ca1baebe344de4f84c +"tiny-invariant@npm:^1.0.6, tiny-invariant@npm:^1.3.1, tiny-invariant@npm:^1.3.3": + version: 1.3.3 + resolution: "tiny-invariant@npm:1.3.3" + checksum: 5e185c8cc2266967984ce3b352a4e57cb89dad5a8abb0dea21468a6ecaa67cd5bb47a3b7a85d08041008644af4f667fb8b6575ba38ba5fb00b3b5068306e59fe languageName: node linkType: hard @@ -21798,6 +24176,13 @@ __metadata: languageName: node linkType: hard +"tocbot@npm:^4.20.1": + version: 4.28.2 + resolution: "tocbot@npm:4.28.2" + checksum: 19754bf787090117680ded8f815ac57a167dd0706a976522341e47777dec3f91c44cb5dc29bc119f0884388638941f2dc31b99c93268721e332db10a3fdfbf91 + languageName: node + linkType: hard + "toggle-selection@npm:^1.0.6": version: 1.0.6 resolution: "toggle-selection@npm:1.0.6" @@ -21865,6 +24250,13 @@ __metadata: languageName: node linkType: hard +"ts-dedent@npm:^2.0.0": + version: 2.2.0 + resolution: "ts-dedent@npm:2.2.0" + checksum: 93ed8f7878b6d5ed3c08d99b740010eede6bccfe64bce61c5a4da06a2c17d6ddbb80a8c49c2d15251de7594a4f93ffa21dd10e7be75ef66a4dc9951b4a94e2af + languageName: node + linkType: hard + "ts-interface-checker@npm:^0.1.9": version: 0.1.13 resolution: "ts-interface-checker@npm:0.1.13" @@ -22016,7 +24408,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.8.1": +"tslib@npm:^1.13.0, tslib@npm:^1.8.1": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd @@ -22186,7 +24578,28 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^2.12.2": +"type-fest@npm:^0.6.0": + version: 0.6.0 + resolution: "type-fest@npm:0.6.0" + checksum: b2188e6e4b21557f6e92960ec496d28a51d68658018cba8b597bd3ef757721d1db309f120ae987abeeda874511d14b776157ff809f23c6d1ce8f83b9b2b7d60f + languageName: node + linkType: hard + +"type-fest@npm:^0.8.1": + version: 0.8.1 + resolution: "type-fest@npm:0.8.1" + checksum: d61c4b2eba24009033ae4500d7d818a94fd6d1b481a8111612ee141400d5f1db46f199c014766b9fa9b31a6a7374d96fc748c6d688a78a3ce5a33123839becb7 + languageName: node + linkType: hard + +"type-fest@npm:^1.0.1": + version: 1.4.0 + resolution: "type-fest@npm:1.4.0" + checksum: b011c3388665b097ae6a109a437a04d6f61d81b7357f74cbcb02246f2f5bd72b888ae33631b99871388122ba0a87f4ff1c94078e7119ff22c70e52c0ff828201 + languageName: node + linkType: hard + +"type-fest@npm:^2.12.2, type-fest@npm:^2.19.0": version: 2.19.0 resolution: "type-fest@npm:2.19.0" checksum: a4ef07ece297c9fba78fc1bd6d85dff4472fe043ede98bd4710d2615d15776902b595abf62bd78339ed6278f021235fb28a96361f8be86ed754f778973a0d278 @@ -22262,10 +24675,19 @@ __metadata: languageName: node linkType: hard -"ufo@npm:^1.3.0": - version: 1.3.0 - resolution: "ufo@npm:1.3.0" - checksum: 01f0be86cd5c205ad1b49ebea985e000a4542c503ee75398302b0f5e4b9a6d9cd8e77af2dc614ab7bea08805fdfd9a85191fb3b5ee3df383cb936cf65e9db30d +"ufo@npm:^1.5.3": + version: 1.5.3 + resolution: "ufo@npm:1.5.3" + checksum: 2f54fa543b2e689cc4ab341fe2194937afe37c5ee43cd782e6ecc184e36859e84d4197a43ae4cd6e9a56f793ca7c5b950dfff3f16fadaeef9b6b88b05c88c8ef + languageName: node + linkType: hard + +"uglify-js@npm:^3.1.4": + version: 3.18.0 + resolution: "uglify-js@npm:3.18.0" + bin: + uglifyjs: bin/uglifyjs + checksum: 887733d05d4139a94dffd04a5f07ee7d8be70201c016ea48cb82703778b5c48fadbe6e5e7ac956425522f72e657d3eade23f06ae8a0e2eeed2d684bf6cc25e36 languageName: node linkType: hard @@ -22338,6 +24760,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: 3192ef6f3fd5df652f2dc1cd782b49d6ff14dc98e5dced492aa8a8c65425227da5da6aafe22523c67f035a272c599bb89cfe803c1db6311e44bed3042fc25487 + languageName: node + linkType: hard + "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" @@ -22369,6 +24798,13 @@ __metadata: languageName: node linkType: hard +"unicorn-magic@npm:^0.1.0": + version: 0.1.0 + resolution: "unicorn-magic@npm:0.1.0" + checksum: 48c5882ca3378f380318c0b4eb1d73b7e3c5b728859b060276e0a490051d4180966beeb48962d850fd0c6816543bcdfc28629dcd030bb62a286a2ae2acb5acb6 + languageName: node + linkType: hard + "unique-filename@npm:^1.1.1": version: 1.1.1 resolution: "unique-filename@npm:1.1.1" @@ -22405,6 +24841,45 @@ __metadata: languageName: node linkType: hard +"unique-string@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-string@npm:3.0.0" + dependencies: + crypto-random-string: ^4.0.0 + checksum: 1a1e2e7d02eab1bb10f720475da735e1990c8a5ff34edd1a3b6bc31590cb4210b7a1233d779360cc622ce11c211e43afa1628dd658f35d3e6a89964b622940df + languageName: node + linkType: hard + +"unist-util-is@npm:^6.0.0": + version: 6.0.0 + resolution: "unist-util-is@npm:6.0.0" + dependencies: + "@types/unist": ^3.0.0 + checksum: f630a925126594af9993b091cf807b86811371e465b5049a6283e08537d3e6ba0f7e248e1e7dab52cfe33f9002606acef093441137181b327f6fe504884b20e2 + languageName: node + linkType: hard + +"unist-util-visit-parents@npm:^6.0.0": + version: 6.0.1 + resolution: "unist-util-visit-parents@npm:6.0.1" + dependencies: + "@types/unist": ^3.0.0 + unist-util-is: ^6.0.0 + checksum: 08927647c579f63b91aafcbec9966dc4a7d0af1e5e26fc69f4e3e6a01215084835a2321b06f3cbe7bf7914a852830fc1439f0fc3d7153d8804ac3ef851ddfa20 + languageName: node + linkType: hard + +"unist-util-visit@npm:^5.0.0": + version: 5.0.0 + resolution: "unist-util-visit@npm:5.0.0" + dependencies: + "@types/unist": ^3.0.0 + unist-util-is: ^6.0.0 + unist-util-visit-parents: ^6.0.0 + checksum: 9ec42e618e7e5d0202f3c191cd30791b51641285732767ee2e6bcd035931032e3c1b29093f4d7fd0c79175bbc1f26f24f26ee49770d32be76f8730a652a857e6 + languageName: node + linkType: hard + "universalify@npm:^0.1.0": version: 0.1.2 resolution: "universalify@npm:0.1.2" @@ -22433,6 +24908,25 @@ __metadata: languageName: node linkType: hard +"unplugin@npm:^1.3.1": + version: 1.11.0 + resolution: "unplugin@npm:1.11.0" + dependencies: + acorn: ^8.11.3 + chokidar: ^3.6.0 + webpack-sources: ^3.2.3 + webpack-virtual-modules: ^0.6.1 + checksum: b99ed2d0078fa49e81f5280e9cce58ce6ab2bd36700b4b5e02cafced96ef213ca1c6ed86cf95ef47ae3eda93cb4f79903927ec4f2068da302bd815f7c579aebc + languageName: node + linkType: hard + +"untildify@npm:^4.0.0": + version: 4.0.0 + resolution: "untildify@npm:4.0.0" + checksum: 39ced9c418a74f73f0a56e1ba4634b4d959422dff61f4c72a8e39f60b99380c1b45ed776fbaa0a4101b157e4310d873ad7d114e8534ca02609b4916bb4187fb9 + languageName: node + linkType: hard + "unzipper@npm:^0.10.14": version: 0.10.14 resolution: "unzipper@npm:0.10.14" @@ -22451,17 +24945,17 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.13": - version: 1.0.13 - resolution: "update-browserslist-db@npm:1.0.13" +"update-browserslist-db@npm:^1.0.16": + version: 1.1.0 + resolution: "update-browserslist-db@npm:1.1.0" dependencies: - escalade: ^3.1.1 - picocolors: ^1.0.0 + escalade: ^3.1.2 + picocolors: ^1.0.1 peerDependencies: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 1e47d80182ab6e4ad35396ad8b61008ae2a1330221175d0abd37689658bdb61af9b705bfc41057fd16682474d79944fb2d86767c5ed5ae34b6276b9bed353322 + checksum: 7b74694d96f0c360f01b702e72353dc5a49df4fe6663d3ee4e5c628f061576cddf56af35a3a886238c01dd3d8f231b7a86a8ceaa31e7a9220ae31c1c1238e562 languageName: node linkType: hard @@ -22491,13 +24985,13 @@ __metadata: languageName: node linkType: hard -"url@npm:^0.11.1, url@npm:~0.11.0": - version: 0.11.1 - resolution: "url@npm:0.11.1" +"url@npm:^0.11.0, url@npm:^0.11.1, url@npm:~0.11.0": + version: 0.11.3 + resolution: "url@npm:0.11.3" dependencies: punycode: ^1.4.1 - qs: ^6.11.0 - checksum: a7de4b37bbcbe60ef199acda4ce437ef843c0ef3a4b34ec3e3d97e0446a5f50dc7bfeafbe33ad118cf4e5aa04805e1328f0d0126e254f2b77bb8498fa395c596 + qs: ^6.11.2 + checksum: f9e7886f46a16f96d2e42fbcc5d682c231c55ef5442c1ff66150c0f6556f6e3a97d094a84f51be15ec2432711d212eb60426659ce418f5fcadeaa3f601532c4e languageName: node linkType: hard @@ -22564,7 +25058,7 @@ __metadata: languageName: node linkType: hard -"util@npm:^0.12.0, util@npm:^0.12.5, util@npm:~0.12.0": +"util@npm:^0.12.4, util@npm:^0.12.5, util@npm:~0.12.0": version: 0.12.5 resolution: "util@npm:0.12.5" dependencies: @@ -22675,6 +25169,18 @@ __metadata: languageName: node linkType: hard +"vite-plugin-node-polyfills@npm:^0.22.0": + version: 0.22.0 + resolution: "vite-plugin-node-polyfills@npm:0.22.0" + dependencies: + "@rollup/plugin-inject": ^5.0.5 + node-stdlib-browser: ^1.2.0 + peerDependencies: + vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + checksum: c08d3df0d5cc3102280483d3f7b216f92a18e0708fcb9f67f78f01ab865474254756bacee17caa90b3f46afe5834cb9d8de0dd0e58c1bbbdae1b949edc1e6b57 + languageName: node + linkType: hard + "vite-plugin-top-level-await@npm:^1.3.0": version: 1.3.1 resolution: "vite-plugin-top-level-await@npm:1.3.1" @@ -22739,7 +25245,7 @@ __metadata: languageName: node linkType: hard -"vm-browserify@npm:^1.0.0, vm-browserify@npm:^1.1.2": +"vm-browserify@npm:^1.0.0, vm-browserify@npm:^1.0.1, vm-browserify@npm:^1.1.2": version: 1.1.2 resolution: "vm-browserify@npm:1.1.2" checksum: 10a1c50aab54ff8b4c9042c15fc64aefccce8d2fb90c0640403242db0ee7fb269f9b102bdb69cfb435d7ef3180d61fd4fb004a043a12709abaf9056cfd7e039d @@ -22786,13 +25292,13 @@ __metadata: languageName: node linkType: hard -"watchpack@npm:^2.4.0": - version: 2.4.0 - resolution: "watchpack@npm:2.4.0" +"watchpack@npm:^2.2.0, watchpack@npm:^2.4.0": + version: 2.4.1 + resolution: "watchpack@npm:2.4.1" dependencies: glob-to-regexp: ^0.4.1 graceful-fs: ^4.1.2 - checksum: 23d4bc58634dbe13b86093e01c6a68d8096028b664ab7139d58f0c37d962d549a940e98f2f201cecdabd6f9c340338dc73ef8bf094a2249ef582f35183d1a131 + checksum: 5b0179348655dcdf19cac7cb4ff923fdc024d630650c0bf6bec8899cf47c60e19d4f810a88dba692ed0e7f684cf0fcffea86efdbf6c35d81f031e328043b7fab languageName: node linkType: hard @@ -23060,6 +25566,13 @@ __metadata: languageName: node linkType: hard +"webpack-virtual-modules@npm:^0.6.1": + version: 0.6.2 + resolution: "webpack-virtual-modules@npm:0.6.2" + checksum: 7e8e1d63f35864c815420cc2f27da8561a1e028255040698a352717de0ba46d3b3faf16f06c1a1965217054c4c2894eb9af53a85451870e919b5707ce9c5822d + languageName: node + linkType: hard + "webpack@npm:^5.88.0": version: 5.88.0 resolution: "webpack@npm:5.88.0" @@ -23268,6 +25781,13 @@ __metadata: languageName: node linkType: hard +"wordwrap@npm:^1.0.0": + version: 1.0.0 + resolution: "wordwrap@npm:1.0.0" + checksum: 2a44b2788165d0a3de71fd517d4880a8e20ea3a82c080ce46e294f0b68b69a2e49cff5f99c600e275c698a90d12c5ea32aff06c311f0db2eb3f1201f3e7b2a04 + languageName: node + linkType: hard + "workerpool@npm:6.2.1": version: 6.2.1 resolution: "workerpool@npm:6.2.1" @@ -23315,6 +25835,17 @@ __metadata: languageName: node linkType: hard +"write-file-atomic@npm:^2.3.0": + version: 2.4.3 + resolution: "write-file-atomic@npm:2.4.3" + dependencies: + graceful-fs: ^4.1.11 + imurmurhash: ^0.1.4 + signal-exit: ^3.0.2 + checksum: 2db81f92ae974fd87ab4a5e7932feacaca626679a7c98fcc73ad8fcea5a1950eab32fa831f79e9391ac99b562ca091ad49be37a79045bd65f595efbb8f4596ae + languageName: node + linkType: hard + "write-file-atomic@npm:^4.0.2": version: 4.0.2 resolution: "write-file-atomic@npm:4.0.2" @@ -23335,7 +25866,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.13.0, ws@npm:^8.11.0, ws@npm:^8.13.0, ws@npm:^8.8.0": +"ws@npm:8.13.0": version: 8.13.0 resolution: "ws@npm:8.13.0" peerDependencies: @@ -23365,6 +25896,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:^8.11.0, ws@npm:^8.13.0, ws@npm:^8.2.3, ws@npm:^8.8.0": + version: 8.18.0 + resolution: "ws@npm:8.18.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 91d4d35bc99ff6df483bdf029b9ea4bfd7af1f16fc91231a96777a63d263e1eabf486e13a2353970efc534f9faa43bdbf9ee76525af22f4752cbc5ebda333975 + languageName: node + linkType: hard + "xml-name-validator@npm:^4.0.0": version: 4.0.0 resolution: "xml-name-validator@npm:4.0.0"