diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 098818d6..00000000 --- a/.eslintrc +++ /dev/null @@ -1,24 +0,0 @@ -{ - "parser": "@typescript-eslint/parser", - "parserOptions": { - "project": "tsconfig.json" - }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", - "prettier" - ], - "plugins": ["@typescript-eslint"], - "rules": { - // https://github.com/react-hook-form/react-hook-form/discussions/8622 - "@typescript-eslint/no-misused-promises": [ - 2, - { - "checksVoidReturn": { - "attributes": false - } - } - ] - } -} diff --git a/.gitignore b/.gitignore index a18d8ca4..58951ea4 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,6 @@ dist-ssr # Editor directories and files .idea .DS_Store + +.env +tsconfig.tsbuildinfo diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index a075e143..00000000 --- a/.prettierignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules -build/ -dist/ -pnpm-lock.yaml \ No newline at end of file diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 76d810d0..00000000 --- a/.prettierrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/prettierrc", - "arrowParens": "always", - "printWidth": 80, - "singleQuote": true, - "jsxSingleQuote": false, - "semi": false, - "trailingComma": "all", - "tabWidth": 2 -} diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 94cc1d0a..2c0eb2c4 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,10 +1,10 @@ { "recommendations": [ "EditorConfig.EditorConfig", - "esbenp.prettier-vscode", - "streetsidesoftware.code-spell-checker", - "csstools.postcss", "bradlc.vscode-tailwindcss", - "dbaeumer.vscode-eslint" + "csstools.postcss", + "dprint.dprint", + "esbenp.prettier-vscode", + "streetsidesoftware.code-spell-checker" ] } diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..a5e1f25a --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,31 @@ +{ + "[css]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[html]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[yaml]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "css.lint.unknownAtRules": "ignore", + "editor.defaultFormatter": "dprint.dprint", + "editor.formatOnSave": true, + "editor.tabSize": 2, + "files.watcherExclude": { + "**/.git/objects/**": true, + "**/.git/subtree-cache/**": true, + "target/**": true + }, + "ltex.disabledRules": { + "en-US": [ + "MORFOLOGIK_RULE_EN_US" + ] + }, + "markdownlint.config": { + "MD013": false, + "MD033": false, + "MD041": false + }, + "prettier.printWidth": 2 +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 00000000..243c3c2f --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,49 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "watch", + "dependsOn": ["watch:compile", "watch:server", "watch:www"], + "problemMatcher": [] + }, + { + "label": "watch:compile", + "type": "npm", + "script": "watch:compile", + "problemMatcher": ["$tsc"], + "isBackground": true, + "presentation": { + "focus": false, + "panel": "shared", + "showReuseMessage": true, + "clear": false + } + }, + { + "label": "watch:server", + "type": "npm", + "script": "watch:server", + "problemMatcher": ["$tsc"], + "isBackground": true, + "presentation": { + "focus": false, + "panel": "shared", + "showReuseMessage": true, + "clear": false + } + }, + { + "label": "watch:www", + "type": "npm", + "script": "watch:www", + "problemMatcher": "$tsc", + "isBackground": true, + "presentation": { + "focus": false, + "panel": "shared", + "showReuseMessage": true, + "clear": false + } + } + ] +} diff --git a/README.md b/README.md index 464295ba..b1821ec3 100644 --- a/README.md +++ b/README.md @@ -1,36 +1,58 @@ # Capi Multisig App -"Multisig" (multiple signatories) is a term which describes an account that is governed by multiple actors, who operate this shared account by creating and collectively-approving proposals. There are many use cases to which multisigs are applicable; some use cases include corporate governance, security, spend tracking/management, and the definition and upholding of contractual obligations. +"Multisig" (multiple signatories) is a term which describes an account that is +governed by multiple actors, who operate this shared account by creating and +collectively-approving proposals. There are many use cases to which multisigs +are applicable; some use cases include corporate governance, security, spend +tracking/management, and the definition and upholding of contractual +obligations. -The Capi Multisig App simplifies the management of multisigs on Substrate networks. +The Capi Multisig App simplifies the management of multisigs on Substrate +networks. -In its first iteration, the Capi Multisig App connects to the Westend Testnet and provides functionality for creating a multisig setup which uses a `PureProxy` as vault (the account holding the funds). +In its first iteration, the Capi Multisig App connects to the Westend Testnet +and provides functionality for creating a multisig setup which uses a +`PureProxy` as vault (the account holding the funds). ## Usage Prerequisites -1. Have the Polkadot.js extension installed in your browser. -2. If you don't already have accounts, follow [this guide](https://www.youtube.com/watch?v=sy7lvAqyzkY). Ensure your accounts are marked as accessible to the Westend testnet. -3. Get some testnet tokens via the [Westend Faucet](https://matrix.to/#/#westend_faucet:matrix.org) by following [this guide](https://wiki.polkadot.network/docs/learn-DOT#getting-tokens-on-the-westend-testnet) - -Note: The faucet can send tokens only once per day. Use [the accounts page](https://polkadot.js.org/apps/#/accounts) on Polkadot.js Apps or a wallet of your choice in order to split the tokens between your accounts in case you need to pay fees. +1. Have the Polkadot.js extension installed in your browser. +2. If you don't already have accounts, follow + [this guide](https://www.youtube.com/watch?v=sy7lvAqyzkY). Ensure your + accounts are marked as accessible to the Westend testnet. +3. Get some testnet tokens via the + [Westend Faucet](https://matrix.to/#/#westend_faucet:matrix.org) by following + [this guide](https://wiki.polkadot.network/docs/learn-DOT#getting-tokens-on-the-westend-testnet) +Note: The faucet can send tokens only once per day. Use +[the accounts page](https://polkadot.js.org/apps/#/accounts) on Polkadot.js Apps +or a wallet of your choice in order to split the tokens between your accounts in +case you need to pay fees. ## Tech stack + TypeScript, Capi, Preact, Tailwind, Vite, DynamoDB ## Run locally + Install dependencies + ``` pnpm install ``` + Start the dev server + ``` pnpm run start ``` + Build for production + ``` pnpm run build ``` + ## References and Links - [Wiki Multisig](https://wiki.polkadot.network/docs/learn-account-multisig) diff --git a/common/index.ts b/common/index.ts new file mode 100644 index 00000000..425d0f3f --- /dev/null +++ b/common/index.ts @@ -0,0 +1 @@ +export const HI = "World" diff --git a/common/package.json b/common/package.json new file mode 100644 index 00000000..c8312cbb --- /dev/null +++ b/common/package.json @@ -0,0 +1,5 @@ +{ + "name": "common", + "private": true, + "type": "module" +} diff --git a/common/tsconfig.json b/common/tsconfig.json new file mode 100644 index 00000000..947149a1 --- /dev/null +++ b/common/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "outDir": "dist" + }, + "extends": "../tsconfig.base.json", + "include": ["."] +} diff --git a/cspell.json b/cspell.json index 84896b70..34eec535 100644 --- a/cspell.json +++ b/cspell.json @@ -6,11 +6,10 @@ ], "dictionaries": ["project-words"], "ignorePaths": [ - "pnpm-lock.yaml", - "src/assets/", - "public", + "**/tsconfig.tsbuildinfo", ".gitignore", - ".prettierignore", - ".prettierrc" + "pnpm-lock.yaml", + "www/public", + "www/src/assets/" ] } diff --git a/dprint.json b/dprint.json new file mode 100644 index 00000000..a1922818 --- /dev/null +++ b/dprint.json @@ -0,0 +1,20 @@ +{ + "incremental": true, + "indentWidth": 2, + "lineWidth": 80, + "typescript": { + "quoteProps": "asNeeded", + "arrowFunction.useParentheses": "force", + "semiColons": "asi" + }, + "markdown": { + "textWrap": "always" + }, + "includes": ["**.{js,json,md,ts,tsx}"], + "excludes": ["build", "node_modules", "www/dist"], + "plugins": [ + "https://plugins.dprint.dev/json-0.17.0.wasm", + "https://plugins.dprint.dev/markdown-0.15.2.wasm", + "https://plugins.dprint.dev/typescript-0.83.0.wasm" + ] +} diff --git a/netlify.toml b/netlify.toml index d0676f77..c2fa4f0c 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,4 +1,4 @@ [[redirects]] from = "/*" status = 200 -to = "/index.html" +to = "/www/index.html" diff --git a/package.json b/package.json index adf82280..69d769a8 100644 --- a/package.json +++ b/package.json @@ -1,48 +1,36 @@ { - "name": "capi-multisig", + "name": "root", "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "tsc && vite build", - "preview": "vite preview", - "format": "prettier . --write", - "lint": "pnpm eslint --fix src" - }, + "workspaces": [ + "common", + "server", + "www" + ], "dependencies": { "@headlessui/react": "^1.7.11", - "@hookform/resolvers": "^2.9.11", "@preact/signals": "^1.1.3", "@talisman-connect/wallets": "^1.1.3", "capi": "0.1.0-beta.26", "preact": "^10.12.1", "react-hook-form": "^7.43.3", "react-router-dom": "^6.8.1", + "scale-codec": "0.11.0-beta.1", "tailwind-merge": "^1.10.0", "vite-tsconfig-paths": "^4.0.5", - "zod": "^3.20.6" + "zod": "^3.21.4" }, "resolutions": { "react": "preact/compat", "react-dom": "preact/compat" }, "devDependencies": { - "@babel/core": ">=7.12.10 <8.0.0", - "@preact/preset-vite": "^2.5.0", - "@tailwindcss/forms": "^0.5.3", - "@tailwindcss/line-clamp": "^0.4.2", - "@typescript-eslint/eslint-plugin": "^5.54.0", - "@typescript-eslint/parser": "^5.54.0", - "autoprefixer": "^10.4.13", - "clsx": "^1.2.1", - "eslint": "^8.35.0", - "eslint-config-prettier": "^8.6.0", - "postcss": "^8.4.21", - "prettier": "^2.8.4", - "prettier-plugin-tailwindcss": "^0.2.3", - "tailwindcss": "^3.2.7", - "typescript": "^4.9.5", - "vite": "^4.1.4" + "typescript": "^4.9.5" + }, + "scripts": { + "compile": "tsc -b", + "watch:compile": "npm run compile -- -w", + "watch:server": "npm run watch -w server", + "watch:www": "npm run watch -w www", + "build": "npm run compile && npm run build -w www" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f64d6e85..02db6b84 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,65 +4,119 @@ overrides: react: preact/compat react-dom: preact/compat -specifiers: - '@babel/core': '>=7.12.10 <8.0.0' - '@headlessui/react': ^1.7.11 - '@hookform/resolvers': ^2.9.11 - '@preact/preset-vite': ^2.5.0 - '@preact/signals': ^1.1.3 - '@tailwindcss/forms': ^0.5.3 - '@tailwindcss/line-clamp': ^0.4.2 - '@talisman-connect/wallets': ^1.1.3 - '@typescript-eslint/eslint-plugin': ^5.54.0 - '@typescript-eslint/parser': ^5.54.0 - autoprefixer: ^10.4.13 - capi: 0.1.0-beta.26 - clsx: ^1.2.1 - eslint: ^8.35.0 - eslint-config-prettier: ^8.6.0 - postcss: ^8.4.21 - preact: ^10.12.1 - prettier: ^2.8.4 - prettier-plugin-tailwindcss: ^0.2.3 - react-hook-form: ^7.43.3 - react-router-dom: ^6.8.1 - tailwind-merge: ^1.10.0 - tailwindcss: ^3.2.7 - typescript: ^4.9.5 - vite: ^4.1.4 - vite-tsconfig-paths: ^4.0.5 - zod: ^3.20.6 - -dependencies: - '@headlessui/react': 1.7.11 - '@hookform/resolvers': 2.9.11_react-hook-form@7.43.3 - '@preact/signals': 1.1.3_preact@10.12.1 - '@talisman-connect/wallets': 1.1.3 - capi: 0.1.0-beta.26 - preact: 10.12.1 - react-hook-form: 7.43.3 - react-router-dom: 6.8.1 - tailwind-merge: 1.10.0 - vite-tsconfig-paths: 4.0.5_typescript@4.9.5 - zod: 3.20.6 - -devDependencies: - '@babel/core': 7.21.0 - '@preact/preset-vite': 2.5.0_b2ipitzifys6ns6ctjag4f7do4 - '@tailwindcss/forms': 0.5.3_tailwindcss@3.2.7 - '@tailwindcss/line-clamp': 0.4.2_tailwindcss@3.2.7 - '@typescript-eslint/eslint-plugin': 5.54.0_6mj2wypvdnknez7kws2nfdgupi - '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu - autoprefixer: 10.4.13_postcss@8.4.21 - clsx: 1.2.1 - eslint: 8.35.0 - eslint-config-prettier: 8.6.0_eslint@8.35.0 - postcss: 8.4.21 - prettier: 2.8.4 - prettier-plugin-tailwindcss: 0.2.3_prettier@2.8.4 - tailwindcss: 3.2.7 - typescript: 4.9.5 - vite: 4.1.4 +importers: + + .: + specifiers: + '@headlessui/react': ^1.7.11 + '@preact/signals': ^1.1.3 + '@talisman-connect/wallets': ^1.1.3 + capi: 0.1.0-beta.26 + preact: ^10.12.1 + react-hook-form: ^7.43.3 + react-router-dom: ^6.8.1 + scale-codec: 0.11.0-beta.1 + tailwind-merge: ^1.10.0 + typescript: ^4.9.5 + vite-tsconfig-paths: ^4.0.5 + zod: ^3.21.4 + dependencies: + '@headlessui/react': 1.7.13 + '@preact/signals': 1.1.3_preact@10.13.1 + '@talisman-connect/wallets': 1.1.3 + capi: 0.1.0-beta.26 + preact: 10.13.1 + react-hook-form: 7.43.5 + react-router-dom: 6.9.0 + scale-codec: 0.11.0-beta.1 + tailwind-merge: 1.10.0 + vite-tsconfig-paths: 4.0.5_typescript@4.9.5 + zod: 3.21.4 + devDependencies: + typescript: 4.9.5 + + common: + specifiers: {} + + server: + specifiers: + '@aws-sdk/client-dynamodb': ^3.288.0 + '@aws-sdk/lib-dynamodb': ^3.288.0 + '@trpc/server': ^10.14.1 + '@types/cors': ^2.8.13 + common: workspace:../common + cors: ^2.8.5 + dotenv: ^16.0.3 + nodemon: ^2.0.21 + typesafe-dynamodb: ^0.2.3 + dependencies: + '@aws-sdk/client-dynamodb': 3.289.0 + '@aws-sdk/lib-dynamodb': 3.289.0_4ytebpyoy7dqnlcznnz34q7l7y + '@trpc/server': 10.15.0 + common: link:../common + cors: 2.8.5 + dotenv: 16.0.3 + nodemon: 2.0.21 + typesafe-dynamodb: 0.2.3 + devDependencies: + '@types/cors': 2.8.13 + + www: + specifiers: + '@babel/core': '>=7.12.10 <8.0.0' + '@headlessui/react': ^1.7.11 + '@hookform/resolvers': ^2.9.11 + '@preact/preset-vite': ^2.5.0 + '@preact/signals': ^1.1.3 + '@tailwindcss/forms': ^0.5.3 + '@tailwindcss/line-clamp': ^0.4.2 + '@talisman-connect/wallets': ^1.1.3 + '@tanstack/react-query': ^4.26.1 + '@trpc/client': ^10.14.1 + '@trpc/react-query': ^10.15.0 + '@trpc/server': ^10.14.1 + autoprefixer: ^10.4.13 + clsx: ^1.2.1 + common: workspace:../common + postcss: ^8.4.21 + preact: ^10.12.1 + prettier: ^2.8.4 + prettier-plugin-tailwindcss: ^0.2.4 + react-hook-form: ^7.43.3 + react-router-dom: ^6.8.1 + server: workspace:../server + tailwind-merge: ^1.10.0 + tailwindcss: ^3.2.7 + vite: ^4.1.4 + vite-tsconfig-paths: ^4.0.5 + dependencies: + '@headlessui/react': 1.7.13 + '@hookform/resolvers': 2.9.11_react-hook-form@7.43.5 + '@preact/signals': 1.1.3_preact@10.13.1 + '@talisman-connect/wallets': 1.1.3 + '@tanstack/react-query': 4.26.1 + '@trpc/client': 10.15.0_@trpc+server@10.15.0 + '@trpc/react-query': 10.15.0_h3ewfraqo5s52ggq4zjgcnjcye + '@trpc/server': 10.15.0 + common: link:../common + preact: 10.13.1 + prettier-plugin-tailwindcss: 0.2.4_prettier@2.8.4 + react-hook-form: 7.43.5 + react-router-dom: 6.9.0 + server: link:../server + tailwind-merge: 1.10.0 + vite-tsconfig-paths: 4.0.5 + devDependencies: + '@babel/core': 7.21.0 + '@preact/preset-vite': 2.5.0_dukgwir26pnc5sb3oveyn54x3a + '@tailwindcss/forms': 0.5.3_tailwindcss@3.2.7 + '@tailwindcss/line-clamp': 0.4.2_tailwindcss@3.2.7 + autoprefixer: 10.4.14_postcss@8.4.21 + clsx: 1.2.1 + postcss: 8.4.21 + prettier: 2.8.4 + tailwindcss: 3.2.7_postcss@8.4.21 + vite: 4.1.4 packages: @@ -74,6 +128,786 @@ packages: '@jridgewell/trace-mapping': 0.3.17 dev: true + /@aws-crypto/ie11-detection/3.0.0: + resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} + dependencies: + tslib: 1.14.1 + dev: false + + /@aws-crypto/sha256-browser/3.0.0: + resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} + dependencies: + '@aws-crypto/ie11-detection': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-crypto/supports-web-crypto': 3.0.0 + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/util-locate-window': 3.208.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + dev: false + + /@aws-crypto/sha256-js/3.0.0: + resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} + dependencies: + '@aws-crypto/util': 3.0.0 + '@aws-sdk/types': 3.289.0 + tslib: 1.14.1 + dev: false + + /@aws-crypto/supports-web-crypto/3.0.0: + resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} + dependencies: + tslib: 1.14.1 + dev: false + + /@aws-crypto/util/3.0.0: + resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} + dependencies: + '@aws-sdk/types': 3.289.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + dev: false + + /@aws-sdk/abort-controller/3.289.0: + resolution: {integrity: sha512-Xakz8EeTl0Q3KaWRdCaRQrrYxBAkQGj6eeT+DVmMLMz4gzTcSHwvfR5tVBIPHk4+IjboJJKM5l1xAZ90AGFPAQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/client-dynamodb/3.289.0: + resolution: {integrity: sha512-gsHmHotJeZJNDuhKRn1bKGYgFYqWQYPw4MNpZ136TUNwbQdAKnywVjqJaX0H0zCndJN42l5e2xOCWVSzIAM2fg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.289.0 + '@aws-sdk/config-resolver': 3.289.0 + '@aws-sdk/credential-provider-node': 3.289.0 + '@aws-sdk/fetch-http-handler': 3.289.0 + '@aws-sdk/hash-node': 3.289.0 + '@aws-sdk/invalid-dependency': 3.289.0 + '@aws-sdk/middleware-content-length': 3.289.0 + '@aws-sdk/middleware-endpoint': 3.289.0 + '@aws-sdk/middleware-endpoint-discovery': 3.289.0 + '@aws-sdk/middleware-host-header': 3.289.0 + '@aws-sdk/middleware-logger': 3.289.0 + '@aws-sdk/middleware-recursion-detection': 3.289.0 + '@aws-sdk/middleware-retry': 3.289.0 + '@aws-sdk/middleware-serde': 3.289.0 + '@aws-sdk/middleware-signing': 3.289.0 + '@aws-sdk/middleware-stack': 3.289.0 + '@aws-sdk/middleware-user-agent': 3.289.0 + '@aws-sdk/node-config-provider': 3.289.0 + '@aws-sdk/node-http-handler': 3.289.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/smithy-client': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/url-parser': 3.289.0 + '@aws-sdk/util-base64': 3.208.0 + '@aws-sdk/util-body-length-browser': 3.188.0 + '@aws-sdk/util-body-length-node': 3.208.0 + '@aws-sdk/util-defaults-mode-browser': 3.289.0 + '@aws-sdk/util-defaults-mode-node': 3.289.0 + '@aws-sdk/util-endpoints': 3.289.0 + '@aws-sdk/util-retry': 3.289.0 + '@aws-sdk/util-user-agent-browser': 3.289.0 + '@aws-sdk/util-user-agent-node': 3.289.0 + '@aws-sdk/util-utf8': 3.254.0 + '@aws-sdk/util-waiter': 3.289.0 + tslib: 2.5.0 + uuid: 8.3.2 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-sso-oidc/3.289.0: + resolution: {integrity: sha512-+09EK4aWdNjF+5+nK6Dmlwx3es8NTkyABTOj9H4eKB90rXQVX8PjoaFhK/b+NcNKDxgb1E6k6evZEpAb8dYQHg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/config-resolver': 3.289.0 + '@aws-sdk/fetch-http-handler': 3.289.0 + '@aws-sdk/hash-node': 3.289.0 + '@aws-sdk/invalid-dependency': 3.289.0 + '@aws-sdk/middleware-content-length': 3.289.0 + '@aws-sdk/middleware-endpoint': 3.289.0 + '@aws-sdk/middleware-host-header': 3.289.0 + '@aws-sdk/middleware-logger': 3.289.0 + '@aws-sdk/middleware-recursion-detection': 3.289.0 + '@aws-sdk/middleware-retry': 3.289.0 + '@aws-sdk/middleware-serde': 3.289.0 + '@aws-sdk/middleware-stack': 3.289.0 + '@aws-sdk/middleware-user-agent': 3.289.0 + '@aws-sdk/node-config-provider': 3.289.0 + '@aws-sdk/node-http-handler': 3.289.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/smithy-client': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/url-parser': 3.289.0 + '@aws-sdk/util-base64': 3.208.0 + '@aws-sdk/util-body-length-browser': 3.188.0 + '@aws-sdk/util-body-length-node': 3.208.0 + '@aws-sdk/util-defaults-mode-browser': 3.289.0 + '@aws-sdk/util-defaults-mode-node': 3.289.0 + '@aws-sdk/util-endpoints': 3.289.0 + '@aws-sdk/util-retry': 3.289.0 + '@aws-sdk/util-user-agent-browser': 3.289.0 + '@aws-sdk/util-user-agent-node': 3.289.0 + '@aws-sdk/util-utf8': 3.254.0 + tslib: 2.5.0 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-sso/3.289.0: + resolution: {integrity: sha512-GIpxPaEwqXC+P8wH+G4mIDnxYFJ+2SyYTrnoxb4OUH+gAkU6tybgvsv0fy+jsVD6GAWPdfU1AYk2ZjofdFiHeA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/config-resolver': 3.289.0 + '@aws-sdk/fetch-http-handler': 3.289.0 + '@aws-sdk/hash-node': 3.289.0 + '@aws-sdk/invalid-dependency': 3.289.0 + '@aws-sdk/middleware-content-length': 3.289.0 + '@aws-sdk/middleware-endpoint': 3.289.0 + '@aws-sdk/middleware-host-header': 3.289.0 + '@aws-sdk/middleware-logger': 3.289.0 + '@aws-sdk/middleware-recursion-detection': 3.289.0 + '@aws-sdk/middleware-retry': 3.289.0 + '@aws-sdk/middleware-serde': 3.289.0 + '@aws-sdk/middleware-stack': 3.289.0 + '@aws-sdk/middleware-user-agent': 3.289.0 + '@aws-sdk/node-config-provider': 3.289.0 + '@aws-sdk/node-http-handler': 3.289.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/smithy-client': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/url-parser': 3.289.0 + '@aws-sdk/util-base64': 3.208.0 + '@aws-sdk/util-body-length-browser': 3.188.0 + '@aws-sdk/util-body-length-node': 3.208.0 + '@aws-sdk/util-defaults-mode-browser': 3.289.0 + '@aws-sdk/util-defaults-mode-node': 3.289.0 + '@aws-sdk/util-endpoints': 3.289.0 + '@aws-sdk/util-retry': 3.289.0 + '@aws-sdk/util-user-agent-browser': 3.289.0 + '@aws-sdk/util-user-agent-node': 3.289.0 + '@aws-sdk/util-utf8': 3.254.0 + tslib: 2.5.0 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-sts/3.289.0: + resolution: {integrity: sha512-n+8zDCzk0NvCIXX3MGS8RV/+/MkJso0jkqkPOgPcS8Kf7Zbjlx8FyeGQ5LS7HjhCDk+jExH/s9h1kd3sL1pHQA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/config-resolver': 3.289.0 + '@aws-sdk/credential-provider-node': 3.289.0 + '@aws-sdk/fetch-http-handler': 3.289.0 + '@aws-sdk/hash-node': 3.289.0 + '@aws-sdk/invalid-dependency': 3.289.0 + '@aws-sdk/middleware-content-length': 3.289.0 + '@aws-sdk/middleware-endpoint': 3.289.0 + '@aws-sdk/middleware-host-header': 3.289.0 + '@aws-sdk/middleware-logger': 3.289.0 + '@aws-sdk/middleware-recursion-detection': 3.289.0 + '@aws-sdk/middleware-retry': 3.289.0 + '@aws-sdk/middleware-sdk-sts': 3.289.0 + '@aws-sdk/middleware-serde': 3.289.0 + '@aws-sdk/middleware-signing': 3.289.0 + '@aws-sdk/middleware-stack': 3.289.0 + '@aws-sdk/middleware-user-agent': 3.289.0 + '@aws-sdk/node-config-provider': 3.289.0 + '@aws-sdk/node-http-handler': 3.289.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/smithy-client': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/url-parser': 3.289.0 + '@aws-sdk/util-base64': 3.208.0 + '@aws-sdk/util-body-length-browser': 3.188.0 + '@aws-sdk/util-body-length-node': 3.208.0 + '@aws-sdk/util-defaults-mode-browser': 3.289.0 + '@aws-sdk/util-defaults-mode-node': 3.289.0 + '@aws-sdk/util-endpoints': 3.289.0 + '@aws-sdk/util-retry': 3.289.0 + '@aws-sdk/util-user-agent-browser': 3.289.0 + '@aws-sdk/util-user-agent-node': 3.289.0 + '@aws-sdk/util-utf8': 3.254.0 + fast-xml-parser: 4.1.2 + tslib: 2.5.0 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/config-resolver/3.289.0: + resolution: {integrity: sha512-QYrBJeFJwx9wL73xMJgSTS6zY5SQh0tbZXpVlSZcNDuOufsu5zdcZZCOp0I20yGf8zxKX59u7O73OUlppkk+Wg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/signature-v4': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/util-config-provider': 3.208.0 + '@aws-sdk/util-middleware': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/credential-provider-env/3.289.0: + resolution: {integrity: sha512-h4yNEW2ZJATKVxL0Bvz/WWXUmBr+AhsTyjUNge734306lXNG5/FM7zYp2v6dSQWt02WwBXyfkP3lr+A0n4rHyA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/credential-provider-imds/3.289.0: + resolution: {integrity: sha512-SIl+iLQpDR6HA9CKTebui7NLop5GxnCkufbM3tbSqrQcPcEfYLOwXpu5gpKO2unQzRykCoyRVia1lr7Pc9Hgdg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/node-config-provider': 3.289.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/url-parser': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/credential-provider-ini/3.289.0: + resolution: {integrity: sha512-kvNUn3v4FTRRiqCOXl46v51VTGOM76j5Szcrhkk9qeFW6zt4iFodp6tQ4ynDtDxYxOvjuEfm3ii1YN5nkI1uKA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/credential-provider-env': 3.289.0 + '@aws-sdk/credential-provider-imds': 3.289.0 + '@aws-sdk/credential-provider-process': 3.289.0 + '@aws-sdk/credential-provider-sso': 3.289.0 + '@aws-sdk/credential-provider-web-identity': 3.289.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/shared-ini-file-loader': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/credential-provider-node/3.289.0: + resolution: {integrity: sha512-05CYPGnk5cDiOQDIaXNVibNOwQdI34MDiL17YkSfPv779A+uq4vqg/aBfL41BDJjr1gSGgyvVhlcUdBKnlp93Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/credential-provider-env': 3.289.0 + '@aws-sdk/credential-provider-imds': 3.289.0 + '@aws-sdk/credential-provider-ini': 3.289.0 + '@aws-sdk/credential-provider-process': 3.289.0 + '@aws-sdk/credential-provider-sso': 3.289.0 + '@aws-sdk/credential-provider-web-identity': 3.289.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/shared-ini-file-loader': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/credential-provider-process/3.289.0: + resolution: {integrity: sha512-t39CJHj1/f2DcRbEUSJ1ixwDsgaElDpJPynn59MOdNnrSh5bYuYmkrum/GYXYSsk+HoSK21JvwgvjnrkA9WZKQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/shared-ini-file-loader': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/credential-provider-sso/3.289.0: + resolution: {integrity: sha512-8+DjOqj5JCpVdT4EJtdfis6OioAdiDKM1mvgDTG8R43MSThc+RGfzqaDJQdM+8+hzkYhxYfyI9XB0H+X3rDNsA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-sso': 3.289.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/shared-ini-file-loader': 3.289.0 + '@aws-sdk/token-providers': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/credential-provider-web-identity/3.289.0: + resolution: {integrity: sha512-jZ9hQvr0I7Z2DekDtZytViYn7zNNJG06N0CinAJzzvreAQ1I61rU7mhaWc05jhBSdeA3f82XoDAgxqY4xIh9pQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/endpoint-cache/3.208.0: + resolution: {integrity: sha512-MkrCvaZhTb1qZCjcDH73t5n43h0Kr0GS+30lpXZ9PAnHJZPqv+vhWFPK0ZsFe1XktbS0WOoDR4ED+lWm0Dw7Rg==} + engines: {node: '>=14.0.0'} + dependencies: + mnemonist: 0.38.3 + tslib: 2.5.0 + dev: false + + /@aws-sdk/fetch-http-handler/3.289.0: + resolution: {integrity: sha512-tksh2GnDV1JaI+NO9x+pgyB3VNwjnUdtoMcFGmTDm1TrcPNj0FLX2hLiunlVG7fFMfGLXC2aco0sUra5/5US9Q==} + dependencies: + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/querystring-builder': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/util-base64': 3.208.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/hash-node/3.289.0: + resolution: {integrity: sha512-fL7Pt4LU+tluHn0+BSIFVD2ZVJ5fuXvd1hQt4aTYrgkna1RR5v55Hdy2rNrp/syrkyE+Wv92S3hgZ7ZTBeXFZA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.289.0 + '@aws-sdk/util-buffer-from': 3.208.0 + '@aws-sdk/util-utf8': 3.254.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/invalid-dependency/3.289.0: + resolution: {integrity: sha512-VpXadvpqXFUA8gBH6TAAJzsKfEQ4IvsiD7d9b2B+jw1YtaPFTqEEuDjN6ngpad8PCPCNWl8CI6oBCdMOK+L48A==} + dependencies: + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/is-array-buffer/3.201.0: + resolution: {integrity: sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.5.0 + dev: false + + /@aws-sdk/lib-dynamodb/3.289.0_3rl7i6elqszk3pwsnbi4fnwb6i: + resolution: {integrity: sha512-BHqwYDz843U8rLI+j3jXWMR9WjFojYQrFKyEooabdkuHl/AjHO1Mm2zn5jTzZGDKbZtPR5S1lk3Hx4Bsg/Tjew==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@aws-sdk/client-dynamodb': ^3.0.0 + '@aws-sdk/smithy-client': ^3.0.0 + '@aws-sdk/types': ^3.0.0 + dependencies: + '@aws-sdk/client-dynamodb': 3.289.0 + '@aws-sdk/smithy-client': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/util-dynamodb': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/lib-dynamodb/3.289.0_4ytebpyoy7dqnlcznnz34q7l7y: + resolution: {integrity: sha512-BHqwYDz843U8rLI+j3jXWMR9WjFojYQrFKyEooabdkuHl/AjHO1Mm2zn5jTzZGDKbZtPR5S1lk3Hx4Bsg/Tjew==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@aws-sdk/client-dynamodb': ^3.0.0 + '@aws-sdk/smithy-client': ^3.0.0 + '@aws-sdk/types': ^3.0.0 + dependencies: + '@aws-sdk/client-dynamodb': 3.289.0 + '@aws-sdk/util-dynamodb': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/middleware-content-length/3.289.0: + resolution: {integrity: sha512-D7vGeuaAzKiq0aFPwme1Xy4x69Jn4v0YJ3Xa4J+keNep0yZ9LfU5KSngqsxeTefCqS+2tdaArkBN2VdexmPagw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/middleware-endpoint-discovery/3.289.0: + resolution: {integrity: sha512-VcCMvgwdGeSRI3h5fLS8c8jydM/fBbDQtiBMMVFhI2YBUVnEc2UBFlp2VjqH31ihnrHO5ogW/rMnsAgAFTDMdQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/config-resolver': 3.289.0 + '@aws-sdk/endpoint-cache': 3.208.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/middleware-endpoint/3.289.0: + resolution: {integrity: sha512-nxaQFOG1IurwCHWP22RxgTFZdILsdBg6wbg4GeFpNBtE3bi0zIUYKrUhpdRr/pZyGAboD1oD9iQtxuGb/M6f+w==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/middleware-serde': 3.289.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/signature-v4': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/url-parser': 3.289.0 + '@aws-sdk/util-config-provider': 3.208.0 + '@aws-sdk/util-middleware': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/middleware-host-header/3.289.0: + resolution: {integrity: sha512-yFBOKvKBnITO08JCx+65vXPe9Uo4gZuth/ka9v5swa4wtV8AP+kkOwFrNxSi2iAFLJ4Mg21vGQceeL0bErF6KQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/middleware-logger/3.289.0: + resolution: {integrity: sha512-c5W7AlOdoyTXRoNl2yOVkhbTjp8tX0z65GDb3+/1yYcv+GRtz67WMZscWMQJwEfdCLdDE2GtBe+t2xyFGnmJvA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/middleware-recursion-detection/3.289.0: + resolution: {integrity: sha512-r2NrfnTG0UZRXeFjoyapAake7b1rUo6SC52/UV4Pdm8cHoYMmljnaGLjiAfzt6vWv6cSVCJq1r28Ne4slAoMAg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/middleware-retry/3.289.0: + resolution: {integrity: sha512-Su+iGv5mrFjVCXJmjohX00o3HzkwnhY0TDhIltgolB6ZfOqy3Dfopjj21OWtqY9VYCUiLGC4KRfeb2feyrz5BA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/service-error-classification': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/util-middleware': 3.289.0 + '@aws-sdk/util-retry': 3.289.0 + tslib: 2.5.0 + uuid: 8.3.2 + dev: false + + /@aws-sdk/middleware-sdk-sts/3.289.0: + resolution: {integrity: sha512-9WzUVPEqJcvggGCk9JHXnwhj7fjuMXE/JM3gx7eMSStJCcK+3BARZ1RZnggUN4vN9iTSzdA+r0OpC1XnUGKB2g==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/middleware-signing': 3.289.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/signature-v4': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/middleware-serde/3.289.0: + resolution: {integrity: sha512-pygC+LsEBVAxOzfoxA9jgvqfO1PLivh8s2Yr/aNQOwx49fmTHMvPwRYUGDV38Du6bRYcKI6nxYqkbJFkQkRESQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/middleware-signing/3.289.0: + resolution: {integrity: sha512-9SLATNvibxg4hpr4ldU18LwB6AVzovONWeJLt49FKISz7ZwGF6WVJYUMWeScj4+Z51Gozi7+pUIaFn7i6N3UbA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/signature-v4': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/util-middleware': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/middleware-stack/3.289.0: + resolution: {integrity: sha512-3rWx+UkV//dv/cLIrXmzIa+FZcn6n76JevGHYCTReiRpcvv+xECxgXH2crMYtzbu05WdxGYD6P0IP5tMwH0yXA==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.5.0 + dev: false + + /@aws-sdk/middleware-user-agent/3.289.0: + resolution: {integrity: sha512-XPhB9mgko66BouyxA+7z7SjUaNHyr58Xe/OB8GII5R/JiR3A/lpc8+jm9gEEpjEI/HpF8jLFDnTMbgabVAHOeA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/node-config-provider/3.289.0: + resolution: {integrity: sha512-rR41c3Y7MYEP8TG9X1whHyrXEXOZzi4blSDqeJflwtNt3r3HvErGZiNBdVv368ycPPuu1YRSqTkgOYNCv02vlw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/shared-ini-file-loader': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/node-http-handler/3.289.0: + resolution: {integrity: sha512-zKknSaOY2GNmqH/eoZndmQWoEKhYPV0qRZtAMxuS3DVI5fipBipNzbVBaXrHRjxARx7/VLWnvNArchRoHfOlmw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/abort-controller': 3.289.0 + '@aws-sdk/protocol-http': 3.289.0 + '@aws-sdk/querystring-builder': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/property-provider/3.289.0: + resolution: {integrity: sha512-Raf4lTWPTmEGFV7Lkbfet2n/4Ybz5vQiiU45l56kgIQA88mLUuE4dshgNsM0Zb2rflsTaiN1JR2+RS/8lNtI8A==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/protocol-http/3.289.0: + resolution: {integrity: sha512-/2jOQ3MJZx1xk6BHEOW47ItGo1tgA9cP9a2saYneon05VIV6OuYefO5pG2G0nPnImTbff++N7aioXe5XKrnorw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/querystring-builder/3.289.0: + resolution: {integrity: sha512-llJCS8mAJfBYBjkKeriRmBuDr2jIozrMWhJOkz95SQGFsx1sKBPQMMOV6zunwhQux8bjtjf5wYiR1TM2jNUKqQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.289.0 + '@aws-sdk/util-uri-escape': 3.201.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/querystring-parser/3.289.0: + resolution: {integrity: sha512-84zXKXIYtnTCrez/gGZIGuqfUJezzaOMm7BQwnOnq/sN21ou63jF3Q+tIMhLO/EvDcvmxEOlUXN1kfMQcjEjSw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/service-error-classification/3.289.0: + resolution: {integrity: sha512-+d1Vlb45Bs2gbTmXpRCGQrX4AQDETjA5sx1zLvq1NZGSnTX6LdroYPtXu3dRWJwDHHQpCMN/XfFN8jTw0IzBOg==} + engines: {node: '>=14.0.0'} + dev: false + + /@aws-sdk/shared-ini-file-loader/3.289.0: + resolution: {integrity: sha512-XG9Pfn3itf3Z0p6nY6UuMVMhzZb+oX7L28oyby8REl8BAwfPkcziLxXlZsBHf6KcgYDG1R6z945hvIwZhJbjvA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/signature-v4/3.289.0: + resolution: {integrity: sha512-IQyYHx3zp7PHxFA17YDb6WVx8ejXDxrsnKspFXgZQyoZOPfReqWQs32dcJYXff/IdSzxjwOpwBFbmIt2vbdKnQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/is-array-buffer': 3.201.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/util-hex-encoding': 3.201.0 + '@aws-sdk/util-middleware': 3.289.0 + '@aws-sdk/util-uri-escape': 3.201.0 + '@aws-sdk/util-utf8': 3.254.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/smithy-client/3.289.0: + resolution: {integrity: sha512-miPMdnv4Ivv8RN65LJ9dxzkQNHn9Tp9wzZJXwBcPqGdXyRlkWSuIOIIhhAqQoV9R9ByeshnCWBpwqlITIjNPVw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/middleware-stack': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/token-providers/3.289.0: + resolution: {integrity: sha512-fzvGIfJNoLR5g24ok8cRwc9AMLXoEOyfi+eHocAF6eyfe0NWlQtpsmLe7XXx5I9yZ51lclzV49rEz9ynp243RA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-sso-oidc': 3.289.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/shared-ini-file-loader': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/types/3.289.0: + resolution: {integrity: sha512-wwUC+VwoNlEkgDzK/aJG3+zeMcYRcYFQV4mbZaicYdp3v8hmkUkJUhyxuZYl/FmY46WG+DYv+/Y3NilgfsE+Wg==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.5.0 + dev: false + + /@aws-sdk/url-parser/3.289.0: + resolution: {integrity: sha512-rbtW3O6UBX+eWR/+UiCDNFUVwN8hp82JPy+NGv3NeOvRjBsxkKmcH4UJTHDIeT+suqTDNEdV5nz438u3dHdHrQ==} + dependencies: + '@aws-sdk/querystring-parser': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/util-base64/3.208.0: + resolution: {integrity: sha512-PQniZph5A6N7uuEOQi+1hnMz/FSOK/8kMFyFO+4DgA1dZ5pcKcn5wiFwHkcTb/BsgVqQa3Jx0VHNnvhlS8JyTg==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/util-buffer-from': 3.208.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/util-body-length-browser/3.188.0: + resolution: {integrity: sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==} + dependencies: + tslib: 2.5.0 + dev: false + + /@aws-sdk/util-body-length-node/3.208.0: + resolution: {integrity: sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.5.0 + dev: false + + /@aws-sdk/util-buffer-from/3.208.0: + resolution: {integrity: sha512-7L0XUixNEFcLUGPeBF35enCvB9Xl+K6SQsmbrPk1P3mlV9mguWSDQqbOBwY1Ir0OVbD6H/ZOQU7hI/9RtRI0Zw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/is-array-buffer': 3.201.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/util-config-provider/3.208.0: + resolution: {integrity: sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.5.0 + dev: false + + /@aws-sdk/util-defaults-mode-browser/3.289.0: + resolution: {integrity: sha512-sYrDwjX3s54cvGq69PJpP2vDpJ5BJXhg2KEHbK92Qr2AUqMUgidwZCw4oBaIqKDXcPIrjmhod31s3tTfYmtTMQ==} + engines: {node: '>= 10.0.0'} + dependencies: + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/types': 3.289.0 + bowser: 2.11.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/util-defaults-mode-node/3.289.0: + resolution: {integrity: sha512-PsP40+9peN7kpEmQ2GhEAGwUwD9F/R/BI/1kzjW0nbBsMrTnkUnlZlaitwpBX/OWNV/YZTdVAOvD50j/ACyXlg==} + engines: {node: '>= 10.0.0'} + dependencies: + '@aws-sdk/config-resolver': 3.289.0 + '@aws-sdk/credential-provider-imds': 3.289.0 + '@aws-sdk/node-config-provider': 3.289.0 + '@aws-sdk/property-provider': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/util-dynamodb/3.289.0: + resolution: {integrity: sha512-U6PnoyXrBXLY6uSnjuRY4+Xgau41RoPakkzMsKiwd1Gl/XWs9pIoi5ounChSNVxhHbJ4IIQKSQ5ALeVMhWvUmQ==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.5.0 + dev: false + + /@aws-sdk/util-endpoints/3.289.0: + resolution: {integrity: sha512-PmsgqL9jdNTz3p0eW83nZZGcngAdoIWidXCc32G5tIIYvJutdgkiObAaydtXaMgk5CRvjenngFf6Zg9JyVHOLQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/util-hex-encoding/3.201.0: + resolution: {integrity: sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.5.0 + dev: false + + /@aws-sdk/util-locate-window/3.208.0: + resolution: {integrity: sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.5.0 + dev: false + + /@aws-sdk/util-middleware/3.289.0: + resolution: {integrity: sha512-hw3WHQU9Wk7a1H3x+JhwMA4ECCleeuNlob3fXSYJmXgvZyuWfpMYZi4iSkqoWGFAXYpAtZZLIu45iIcd7F296g==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.5.0 + dev: false + + /@aws-sdk/util-retry/3.289.0: + resolution: {integrity: sha512-noFn++ZKH11ExTBqUU/b9wsOjqxYlDnN/8xq+9oCsyBnEZztVgM/AM3WP5qBPRskk1WzDprID5fb5V87113Uug==} + engines: {node: '>= 14.0.0'} + dependencies: + '@aws-sdk/service-error-classification': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/util-uri-escape/3.201.0: + resolution: {integrity: sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA==} + engines: {node: '>=14.0.0'} + dependencies: + tslib: 2.5.0 + dev: false + + /@aws-sdk/util-user-agent-browser/3.289.0: + resolution: {integrity: sha512-BDXYgNzzz2iNPTkl9MQf7pT4G80V6O6ICwJyH93a5EEdljl7oPrt8i4MS5S0BDAWx58LqjWtVw98GOZfy5BYhw==} + dependencies: + '@aws-sdk/types': 3.289.0 + bowser: 2.11.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/util-user-agent-node/3.289.0: + resolution: {integrity: sha512-f32g9KS7pwO6FQ9N1CtqQPIS6jhvwv/y0+NHNoo9zLTBH0jol3+C2ELIE3N1wB6xvwhsdPqR3WuOiNiCiv8YAQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + dependencies: + '@aws-sdk/node-config-provider': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/util-utf8-browser/3.259.0: + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + dependencies: + tslib: 2.5.0 + dev: false + + /@aws-sdk/util-utf8/3.254.0: + resolution: {integrity: sha512-14Kso/eIt5/qfIBmhEL9L1IfyUqswjSTqO2mY7KOzUZ9SZbwn3rpxmtkhmATkRjD7XIlLKaxBkI7tU9Zjzj8Kw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/util-buffer-from': 3.208.0 + tslib: 2.5.0 + dev: false + + /@aws-sdk/util-waiter/3.289.0: + resolution: {integrity: sha512-HyTEJR8cVor9FS48I2ArMLAs7LJLz6Rkb/0dvudVw84zjNofRgoYQLoZFJHSsiUzVLd7jaaxidC9FKK3lqGz1g==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/abort-controller': 3.289.0 + '@aws-sdk/types': 3.289.0 + tslib: 2.5.0 + dev: false + /@babel/code-frame/7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} @@ -524,30 +1358,8 @@ packages: dev: true optional: true - /@eslint/eslintrc/2.0.0: - resolution: {integrity: sha512-fluIaaV+GyV24CCu/ggiHdV+j4RNh85yQnAYS/G2mZODZgGmmlrgCydjUcV3YvxCm9x8nMAfThsqTni4KiXT4A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.4.1 - globals: 13.20.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/js/8.35.0: - resolution: {integrity: sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@headlessui/react/1.7.11: - resolution: {integrity: sha512-EaDbVgcyiylhtskZZf4Qb/JiiByY7cYbd0qgZ9xm2pm2X7hKojG0P4TaQYKgPOV3vojPhd/pZyQh3nmRkkcSyw==} + /@headlessui/react/1.7.13: + resolution: {integrity: sha512-9n+EQKRtD9266xIHXdY5MfiXPDfYwl7zBM7KOx2Ae3Gdgxy8QML1FkCMjq6AsOf0l6N9uvI4HcFtuFlenaldKg==} engines: {node: '>=10'} peerDependencies: react: ^16 || ^17 || ^18 @@ -556,34 +1368,14 @@ packages: client-only: 0.0.1 dev: false - /@hookform/resolvers/2.9.11_react-hook-form@7.43.3: + /@hookform/resolvers/2.9.11_react-hook-form@7.43.5: resolution: {integrity: sha512-bA3aZ79UgcHj7tFV7RlgThzwSSHZgvfbt2wprldRkYBcMopdMvHyO17Wwp/twcJasNFischFfS7oz8Katz8DdQ==} peerDependencies: react-hook-form: ^7.0.0 dependencies: - react-hook-form: 7.43.3 + react-hook-form: 7.43.5 dev: false - /@humanwhocodes/config-array/0.11.8: - resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer/1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true - - /@humanwhocodes/object-schema/1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - dev: true - /@jridgewell/gen-mapping/0.1.1: resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} engines: {node: '>=6.0.0'} @@ -1016,7 +1808,7 @@ packages: - supports-color dev: false - /@preact/preset-vite/2.5.0_b2ipitzifys6ns6ctjag4f7do4: + /@preact/preset-vite/2.5.0_dukgwir26pnc5sb3oveyn54x3a: resolution: {integrity: sha512-BUhfB2xQ6ex0yPkrT1Z3LbfPzjpJecOZwQ/xJrXGFSZD84+ObyS//41RdEoQCMWsM0t7UHGaujUxUBub7WM1Jw==} peerDependencies: '@babel/core': 7.x @@ -1025,7 +1817,7 @@ packages: '@babel/core': 7.21.0 '@babel/plugin-transform-react-jsx': 7.21.0_@babel+core@7.21.0 '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.21.0 - '@prefresh/vite': 2.2.9_preact@10.12.1+vite@4.1.4 + '@prefresh/vite': 2.2.9_preact@10.13.1+vite@4.1.4 '@rollup/pluginutils': 4.2.1 babel-plugin-transform-hook-names: 1.0.2_@babel+core@7.21.0 debug: 4.3.4 @@ -1041,32 +1833,32 @@ packages: resolution: {integrity: sha512-Kui4p7PMcEQevBgsTO0JBo3gyQ88Q3qzEvsVCuSp11t0JcN4DmGCTJcGRVSCq7Bn7lGxJBO+57jNSzDoDJ+QmA==} dev: false - /@preact/signals/1.1.3_preact@10.12.1: + /@preact/signals/1.1.3_preact@10.13.1: resolution: {integrity: sha512-N09DuAVvc90bBZVRwD+aFhtGyHAmJLhS3IFoawO/bYJRcil4k83nBOchpCEoS0s5+BXBpahgp0Mjf+IOqP57Og==} peerDependencies: preact: 10.x dependencies: '@preact/signals-core': 1.2.3 - preact: 10.12.1 + preact: 10.13.1 dev: false /@prefresh/babel-plugin/0.4.4: resolution: {integrity: sha512-/EvgIFMDL+nd20WNvMO0JQnzIl1EJPgmSaSYrZUww7A+aSdKsi37aL07TljrZR1cBMuzFxcr4xvqsUQLFJEukw==} dev: true - /@prefresh/core/1.4.1_preact@10.12.1: + /@prefresh/core/1.4.1_preact@10.13.1: resolution: {integrity: sha512-og1vaBj3LMJagVncNrDb37Gqc0cWaUcDbpVt5hZtsN4i2Iwzd/5hyTsDHvlMirhSym3wL9ihU0Xa2VhSaOue7g==} peerDependencies: preact: ^10.0.0 dependencies: - preact: 10.12.1 + preact: 10.13.1 dev: true /@prefresh/utils/1.1.3: resolution: {integrity: sha512-Mb9abhJTOV4yCfkXrMrcgFiFT7MfNOw8sDa+XyZBdq/Ai2p4Zyxqsb3EgHLOEdHpMj6J9aiZ54W8H6FTam1u+A==} dev: true - /@prefresh/vite/2.2.9_preact@10.12.1+vite@4.1.4: + /@prefresh/vite/2.2.9_preact@10.13.1+vite@4.1.4: resolution: {integrity: sha512-1ERBF85Ja9/lkrfaltmo4Gca7R2ClQPSHHDDysFgfvPzHmLUeyB0x9WHwhwov/AA1DnyPhsfYT54z3yQd8XrgA==} peerDependencies: preact: ^10.4.0 @@ -1074,17 +1866,17 @@ packages: dependencies: '@babel/core': 7.21.0 '@prefresh/babel-plugin': 0.4.4 - '@prefresh/core': 1.4.1_preact@10.12.1 + '@prefresh/core': 1.4.1_preact@10.13.1 '@prefresh/utils': 1.1.3 '@rollup/pluginutils': 4.2.1 - preact: 10.12.1 + preact: 10.13.1 vite: 4.1.4 transitivePeerDependencies: - supports-color dev: true - /@remix-run/router/1.3.2: - resolution: {integrity: sha512-t54ONhl/h75X94SWsHGQ4G/ZrCEguKSRQr7DrjTciJXW0YU1QhlwYeycvK5JgkzlxmvrK7wq1NB/PLtHxoiDcA==} + /@remix-run/router/1.4.0: + resolution: {integrity: sha512-BJ9SxXux8zAg991UmT8slpwpsd31K1dHHbD3Ba4VzD+liLQ4WAMSxQp2d2ZPRPfN0jN2NPRowcSSoM7lCaF08Q==} engines: {node: '>=14'} dev: false @@ -1128,7 +1920,7 @@ packages: resolution: {integrity: sha512-bpoUYfKtAn8BMzVY88F34CivU/uymKKvmqY3sQ2oSV5h71Cj6jREOknSgVVVwPk8BpUYlp8paYFbtuR4cQpVOA==} dependencies: pako: 2.1.0 - ws: 8.12.1 + ws: 8.13.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -1144,7 +1936,7 @@ packages: tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1' dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.2.7 + tailwindcss: 3.2.7_postcss@8.4.21 dev: true /@tailwindcss/line-clamp/0.4.2_tailwindcss@3.2.7: @@ -1152,7 +1944,7 @@ packages: peerDependencies: tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1' dependencies: - tailwindcss: 3.2.7 + tailwindcss: 3.2.7_postcss@8.4.21 dev: true /@talisman-connect/wallets/1.1.3: @@ -1166,174 +1958,87 @@ packages: - supports-color dev: false - /@types/bn.js/5.1.1: - resolution: {integrity: sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==} - dependencies: - '@types/node': 18.14.1 - dev: false - - /@types/json-schema/7.0.11: - resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} - dev: true - - /@types/node-fetch/2.6.2: - resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} - dependencies: - '@types/node': 18.14.1 - form-data: 3.0.1 - dev: false - - /@types/node/18.14.1: - resolution: {integrity: sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ==} - dev: false - - /@types/semver/7.3.13: - resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} - dev: true - - /@types/websocket/1.0.5: - resolution: {integrity: sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==} - dependencies: - '@types/node': 18.14.1 - dev: false - - /@typescript-eslint/eslint-plugin/5.54.0_6mj2wypvdnknez7kws2nfdgupi: - resolution: {integrity: sha512-+hSN9BdSr629RF02d7mMtXhAJvDTyCbprNYJKrXETlul/Aml6YZwd90XioVbjejQeHbb3R8Dg0CkRgoJDxo8aw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/parser': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu - '@typescript-eslint/scope-manager': 5.54.0 - '@typescript-eslint/type-utils': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu - '@typescript-eslint/utils': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu - debug: 4.3.4 - eslint: 8.35.0 - grapheme-splitter: 1.0.4 - ignore: 5.2.4 - natural-compare-lite: 1.4.0 - regexpp: 3.2.0 - semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true + /@tanstack/query-core/4.26.1: + resolution: {integrity: sha512-Zrx2pVQUP4ndnsu6+K/m8zerXSVY8QM+YSbxA1/jbBY21GeCd5oKfYl92oXPK0hPEUtoNuunIdiq0ZMqLos+Zg==} + dev: false - /@typescript-eslint/parser/5.54.0_ycpbpc6yetojsgtrx3mwntkhsu: - resolution: {integrity: sha512-aAVL3Mu2qTi+h/r04WI/5PfNWvO6pdhpeMRWk9R7rEV4mwJNzoWf5CCU5vDKBsPIFQFjEq1xg7XBI2rjiMXQbQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@tanstack/react-query/4.26.1: + resolution: {integrity: sha512-i3dnz4TOARGIXrXQ5P7S25Zfi4noii/bxhcwPurh2nrf5EUCcAt/95TB2HSmMweUBx206yIMWUMEQ7ptd6zwDg==} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-native: '*' peerDependenciesMeta: - typescript: + react-dom: + optional: true + react-native: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.54.0 - '@typescript-eslint/types': 5.54.0 - '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.9.5 - debug: 4.3.4 - eslint: 8.35.0 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true + '@tanstack/query-core': 4.26.1 + use-sync-external-store: 1.2.0 + dev: false - /@typescript-eslint/scope-manager/5.54.0: - resolution: {integrity: sha512-VTPYNZ7vaWtYna9M4oD42zENOBrb+ZYyCNdFs949GcN8Miwn37b8b7eMj+EZaq7VK9fx0Jd+JhmkhjFhvnovhg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@trpc/client/10.15.0_@trpc+server@10.15.0: + resolution: {integrity: sha512-Tmm3N7jibEOZTsvHRU+tWCVvUf8F9/UcKOVTGAWuyasBpnjOZ7ClZ81F9wo4cg9+9tUxUhuJns+E96/HtATpyQ==} + peerDependencies: + '@trpc/server': 10.15.0 dependencies: - '@typescript-eslint/types': 5.54.0 - '@typescript-eslint/visitor-keys': 5.54.0 - dev: true + '@trpc/server': 10.15.0 + dev: false - /@typescript-eslint/type-utils/5.54.0_ycpbpc6yetojsgtrx3mwntkhsu: - resolution: {integrity: sha512-WI+WMJ8+oS+LyflqsD4nlXMsVdzTMYTxl16myXPaCXnSgc7LWwMsjxQFZCK/rVmTZ3FN71Ct78ehO9bRC7erYQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@trpc/react-query/10.15.0_h3ewfraqo5s52ggq4zjgcnjcye: + resolution: {integrity: sha512-MD8JBoviAioI3ssOzN+Uxd8uGvhgfqvtbmkdhYQkQJOBlQw+4A55BfeXykeRmIHOs6X83iiqZVVerximEzTADQ==} peerDependencies: - eslint: '*' - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@tanstack/react-query': ^4.3.8 + '@trpc/client': 10.15.0 + '@trpc/server': 10.15.0 + react: '>=16.8.0' + react-dom: '>=16.8.0' dependencies: - '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.9.5 - '@typescript-eslint/utils': 5.54.0_ycpbpc6yetojsgtrx3mwntkhsu - debug: 4.3.4 - eslint: 8.35.0 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true + '@tanstack/react-query': 4.26.1 + '@trpc/client': 10.15.0_@trpc+server@10.15.0 + '@trpc/server': 10.15.0 + dev: false - /@typescript-eslint/types/5.54.0: - resolution: {integrity: sha512-nExy+fDCBEgqblasfeE3aQ3NuafBUxZxgxXcYfzYRZFHdVvk5q60KhCSkG0noHgHRo/xQ/BOzURLZAafFpTkmQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + /@trpc/server/10.15.0: + resolution: {integrity: sha512-Kf+wTU5iZjjjEzqZDy+o5wc4nEZKvE0yWdF9qZa72xLu6eTJ0BS2hnwQZeCZ2pIbmQb8/6lFr5igHiY4/dy0mA==} + dev: false - /@typescript-eslint/typescript-estree/5.54.0_typescript@4.9.5: - resolution: {integrity: sha512-X2rJG97Wj/VRo5YxJ8Qx26Zqf0RRKsVHd4sav8NElhbZzhpBI8jU54i6hfo9eheumj4oO4dcRN1B/zIVEqR/MQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + /@types/aws-lambda/8.10.111: + resolution: {integrity: sha512-8HR9UjIKmoemEzE2BviVtFkeenxfbizSu8raFjnT2VXxguZZ2JTlNww7INOH7IA0J/zRa3TjOftkYq6hVNkxDA==} + dev: false + + /@types/bn.js/5.1.1: + resolution: {integrity: sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==} dependencies: - '@typescript-eslint/types': 5.54.0 - '@typescript-eslint/visitor-keys': 5.54.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.5 - typescript: 4.9.5 - transitivePeerDependencies: - - supports-color - dev: true + '@types/node': 18.15.1 + dev: false - /@typescript-eslint/utils/5.54.0_ycpbpc6yetojsgtrx3mwntkhsu: - resolution: {integrity: sha512-cuwm8D/Z/7AuyAeJ+T0r4WZmlnlxQ8wt7C7fLpFlKMR+dY6QO79Cq1WpJhvZbMA4ZeZGHiRWnht7ZJ8qkdAunw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@types/json-schema': 7.0.11 - '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.54.0 - '@typescript-eslint/types': 5.54.0 - '@typescript-eslint/typescript-estree': 5.54.0_typescript@4.9.5 - eslint: 8.35.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.35.0 - semver: 7.3.8 - transitivePeerDependencies: - - supports-color - - typescript + /@types/cors/2.8.13: + resolution: {integrity: sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==} + dependencies: + '@types/node': 18.15.1 dev: true - /@typescript-eslint/visitor-keys/5.54.0: - resolution: {integrity: sha512-xu4wT7aRCakGINTLGeyGqDn+78BwFlggwBjnHa1ar/KaGagnmwLYmlrXIrgAaQ3AE1Vd6nLfKASm7LrFHNbKGA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@types/node-fetch/2.6.2: + resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} dependencies: - '@typescript-eslint/types': 5.54.0 - eslint-visitor-keys: 3.3.0 - dev: true + '@types/node': 18.15.1 + form-data: 3.0.1 + dev: false - /acorn-jsx/5.3.2_acorn@8.8.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + /@types/node/18.15.1: + resolution: {integrity: sha512-U2TWca8AeHSmbpi314QBESRk7oPjSZjDsR+c+H4ECC1l+kFgpZf8Ydhv3SJpPy51VyZHHqxlb6mTTqYNNRVAIw==} + + /@types/websocket/1.0.5: + resolution: {integrity: sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==} dependencies: - acorn: 8.8.2 - dev: true + '@types/node': 18.15.1 + dev: false + + /abbrev/1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: false /acorn-node/1.8.2: resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==} @@ -1354,26 +2059,6 @@ packages: hasBin: true dev: true - /acorn/8.8.2: - resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - - /ajv/6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: true - - /ansi-regex/5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: true - /ansi-sequence-parser/1.1.0: resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==} dev: false @@ -1385,47 +2070,30 @@ packages: color-convert: 1.9.3 dev: true - /ansi-styles/4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: true - /anymatch/3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - dev: true /arg/5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: true - /argparse/2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true - - /array-union/2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true - /asynckit/0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false - /autoprefixer/10.4.13_postcss@8.4.21: - resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} + /autoprefixer/10.4.14_postcss@8.4.21: + resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: browserslist: 4.21.5 - caniuse-lite: 1.0.30001457 + caniuse-lite: 1.0.30001465 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -1433,6 +2101,27 @@ packages: postcss-value-parser: 4.2.0 dev: true + /available-typed-arrays/1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: false + + /aws-sdk/2.1333.0: + resolution: {integrity: sha512-MvOuleNeRryJtkCGXGEWDHPqqgxuqdi4/hGzJEpn9tnjsW9LNK8UgFPpYzUZ24ZO/3S+jiUh8DMMrL5nVGnagg==} + engines: {node: '>= 10.0.0'} + dependencies: + buffer: 4.9.2 + events: 1.1.1 + ieee754: 1.1.13 + jmespath: 0.16.0 + querystring: 0.2.0 + sax: 1.2.1 + url: 0.10.3 + util: 0.12.5 + uuid: 8.0.0 + xml2js: 0.4.19 + dev: false + /babel-plugin-transform-hook-names/1.0.2_@babel+core@7.21.0: resolution: {integrity: sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==} peerDependencies: @@ -1443,7 +2132,7 @@ packages: /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true + dev: false /base64-js/1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -1452,37 +2141,47 @@ packages: /binary-extensions/2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - dev: true /bn.js/5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} dev: false + /bowser/2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + dev: false + /brace-expansion/1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - dev: true + dev: false /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - dev: true /browserslist/4.21.5: resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001457 - electron-to-chromium: 1.4.309 + caniuse-lite: 1.0.30001465 + electron-to-chromium: 1.4.328 node-releases: 2.0.10 update-browserslist-db: 1.0.10_browserslist@4.21.5 dev: true + /buffer/4.9.2: + resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.1.13 + isarray: 1.0.0 + dev: false + /buffer/6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: @@ -1498,18 +2197,20 @@ packages: node-gyp-build: 4.6.0 dev: false - /callsites/3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - dev: true + /call-bind/1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.0 + dev: false /camelcase-css/2.0.1: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} dev: true - /caniuse-lite/1.0.30001457: - resolution: {integrity: sha512-SDIV6bgE1aVbK6XyxdURbUE89zY7+k1BBBaOwYwkNCglXlel/E7mELiHC64HQ+W0xSKlqWhV9Wh7iHxUjMs4fA==} + /caniuse-lite/1.0.30001465: + resolution: {integrity: sha512-HvjgL3MYAJjceTDCcjRnQGjwUz/5qec9n7JPOzUursUoOTIsYCSDOb1l7RsnZE8mjbxG78zVRCKfrBXyvChBag==} dev: true /capi/0.1.0-beta.26: @@ -1521,7 +2222,7 @@ packages: shiki: 0.14.1 tslib: 2.5.0 wat-the-crypto: 0.0.1 - ws: 8.12.1 + ws: 8.13.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -1536,14 +2237,6 @@ packages: supports-color: 5.5.0 dev: true - /chalk/4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - /chokidar/3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -1557,7 +2250,6 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.2 - dev: true /client-only/0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -1574,13 +2266,6 @@ packages: color-name: 1.1.3 dev: true - /color-convert/2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: true - /color-name/1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} dev: true @@ -1598,20 +2283,19 @@ packages: /concat-map/0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true + dev: false /convert-source-map/1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} dev: true - /cross-spawn/7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + /cors/2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true + object-assign: 4.1.1 + vary: 1.1.2 + dev: false /cssesc/3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} @@ -1637,6 +2321,18 @@ packages: ms: 2.0.0 dev: false + /debug/3.2.7_supports-color@5.5.0: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + supports-color: 5.5.0 + dev: false + /debug/4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -1648,10 +2344,6 @@ packages: dependencies: ms: 2.1.2 - /deep-is/0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true - /defined/1.0.1: resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} dev: true @@ -1675,23 +2367,14 @@ packages: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: true - /dir-glob/3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: true - /dlv/1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} dev: true - /doctrine/3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true + /dotenv/16.0.3: + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + engines: {node: '>=12'} + dev: false /ed2curve/0.3.0: resolution: {integrity: sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ==} @@ -1699,8 +2382,8 @@ packages: tweetnacl: 1.0.3 dev: false - /electron-to-chromium/1.4.309: - resolution: {integrity: sha512-U7DTiKe4h+irqBG6h4EZ0XXaZuJj4md3xIXXaGSYhwiumPZ4BSc6rgf9UD0hVUMaeP/jB0q5pKWCPxvhO8fvZA==} + /electron-to-chromium/1.4.328: + resolution: {integrity: sha512-DE9tTy2PNmy1v55AZAO542ui+MLC2cvINMK4P2LXGsJdput/ThVG9t+QGecPuAZZSgC8XoI+Jh9M1OG9IoNSCw==} dev: true /es5-ext/0.10.62: @@ -1768,161 +2451,25 @@ packages: engines: {node: '>=0.8.0'} dev: true - /escape-string-regexp/4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - dev: true - - /eslint-config-prettier/8.6.0_eslint@8.35.0: - resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - dependencies: - eslint: 8.35.0 - dev: true - - /eslint-scope/5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - dev: true - - /eslint-scope/7.1.1: - resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - - /eslint-utils/3.0.0_eslint@8.35.0: - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.35.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /eslint-visitor-keys/2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - - /eslint-visitor-keys/3.3.0: - resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /eslint/8.35.0: - resolution: {integrity: sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint/eslintrc': 2.0.0 - '@eslint/js': 8.35.0 - '@humanwhocodes/config-array': 0.11.8 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.35.0 - eslint-visitor-keys: 3.3.0 - espree: 9.4.1 - esquery: 1.4.2 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.20.0 - grapheme-splitter: 1.0.4 - ignore: 5.2.4 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-sdsl: 4.3.0 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.1 - regexpp: 3.2.0 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /espree/9.4.1: - resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - acorn: 8.8.2 - acorn-jsx: 5.3.2_acorn@8.8.2 - eslint-visitor-keys: 3.3.0 - dev: true - - /esquery/1.4.2: - resolution: {integrity: sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==} - engines: {node: '>=0.10'} - dependencies: - estraverse: 5.3.0 - dev: true - - /esrecurse/4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - dependencies: - estraverse: 5.3.0 - dev: true - - /estraverse/4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true - - /estraverse/5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true - /estree-walker/2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true - /esutils/2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true - /eventemitter3/4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: false + /events/1.1.1: + resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==} + engines: {node: '>=0.4.x'} + dev: false + /ext/1.7.0: resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} dependencies: type: 2.7.2 dev: false - /fast-deep-equal/3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true - /fast-glob/3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} @@ -1934,13 +2481,12 @@ packages: micromatch: 4.0.5 dev: true - /fast-json-stable-stringify/2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true - - /fast-levenshtein/2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true + /fast-xml-parser/4.1.2: + resolution: {integrity: sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==} + hasBin: true + dependencies: + strnum: 1.0.5 + dev: false /fastq/1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} @@ -1948,39 +2494,17 @@ packages: reusify: 1.0.4 dev: true - /file-entry-cache/6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - flat-cache: 3.0.4 - dev: true - /fill-range/7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - dev: true - - /find-up/5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true - /flat-cache/3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} + /for-each/0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: - flatted: 3.2.7 - rimraf: 3.0.2 - dev: true - - /flatted/3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - dev: true + is-callable: 1.2.7 + dev: false /form-data/3.0.1: resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} @@ -1995,33 +2519,34 @@ packages: resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} dev: true - /fs.realpath/1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true - /fsevents/2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true - dev: true optional: true /function-bind/1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true /gensync/1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} dev: true + /get-intrinsic/1.2.0: + resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + dev: false + /glob-parent/5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - dev: true /glob-parent/6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} @@ -2030,110 +2555,82 @@ packages: is-glob: 4.0.3 dev: true - /glob/7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: true - /globals/11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} dev: true - /globals/13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - - /globby/11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.2.12 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 3.0.0 - dev: true - /globrex/0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} dev: false - /grapheme-splitter/1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true + /gopd/1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.0 + dev: false /has-flag/3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - dev: true - /has-flag/4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - dev: true + /has-symbols/1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: false + + /has-tostringtag/1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - dev: true - - /ieee754/1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: false - - /ignore/5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - dev: true - /import-fresh/3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: true + /ieee754/1.1.13: + resolution: {integrity: sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==} + dev: false - /imurmurhash/0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - dev: true + /ieee754/1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false - /inflight/1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: true + /ignore-by-default/1.0.1: + resolution: {integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==} + dev: false /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true + dev: false /ip-regex/4.3.0: resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==} engines: {node: '>=8'} dev: false + /is-arguments/1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + /is-binary-path/2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 - dev: true + + /is-callable/1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: false /is-core-module/2.11.0: resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} @@ -2144,62 +2641,58 @@ packages: /is-extglob/2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - dev: true + + /is-generator-function/1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false /is-glob/4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - dev: true /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - dev: true - /is-path-inside/3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true + /is-typed-array/1.1.10: + resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: false /is-typedarray/1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} dev: false - /isexe/2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true + /isarray/1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: false - /js-sdsl/4.3.0: - resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==} - dev: true + /jmespath/0.16.0: + resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==} + engines: {node: '>= 0.6.0'} + dev: false /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true - /js-yaml/4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - dependencies: - argparse: 2.0.1 - dev: true - /jsesc/2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true dev: true - /json-schema-traverse/0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true - - /json-stable-stringify-without-jsonify/1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true - /json-stringify-safe/5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} dev: false @@ -2218,28 +2711,9 @@ packages: resolution: {integrity: sha512-ymToLHqL02udwVdbkowNpzjFd6UzozMtshPQKVi5k1EjKRqKqBrOnE9QbLEb0/pV76SAiIT13hdL8R6suc+f3g==} dev: true - /levn/0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - dev: true - - /lilconfig/2.0.6: - resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==} - engines: {node: '>=10'} - dev: true - - /locate-path/6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + /lilconfig/2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - dependencies: - p-locate: 5.0.0 - dev: true - - /lodash.merge/4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true /lodash/4.17.21: @@ -2252,13 +2726,6 @@ packages: yallist: 3.1.1 dev: true - /lru-cache/6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true - /merge2/1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -2293,12 +2760,18 @@ packages: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - dev: true + dev: false /minimist/1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true + /mnemonist/0.38.3: + resolution: {integrity: sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==} + dependencies: + obliterator: 1.6.1 + dev: false + /mock-socket/9.2.1: resolution: {integrity: sha512-aw9F9T9G2zpGipLLhSNh6ZpgUyUl4frcVmRN08uE1NWPWg43Wx6+sGPDbQ7E5iFZZDJW5b5bypMeAEHqTbIFag==} engines: {node: '>= 8'} @@ -2311,20 +2784,16 @@ packages: /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + /ms/2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: false + /nanoid/3.3.4: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true - /natural-compare-lite/1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true - - /natural-compare/1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true - /next-tick/1.1.0: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} dev: false @@ -2362,88 +2831,61 @@ packages: resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} dev: true + /nodemon/2.0.21: + resolution: {integrity: sha512-djN/n2549DUtY33S7o1djRCd7dEm0kBnj9c7S9XVXqRUbuggN1MZH/Nqa+5RFQr63Fbefq37nFXAE9VU86yL1A==} + engines: {node: '>=8.10.0'} + hasBin: true + dependencies: + chokidar: 3.5.3 + debug: 3.2.7_supports-color@5.5.0 + ignore-by-default: 1.0.1 + minimatch: 3.1.2 + pstree.remy: 1.1.8 + semver: 5.7.1 + simple-update-notifier: 1.1.0 + supports-color: 5.5.0 + touch: 3.1.0 + undefsafe: 2.0.5 + dev: false + + /nopt/1.0.10: + resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: false + /normalize-path/3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - dev: true /normalize-range/0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} dev: true + /object-assign/4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: false + /object-hash/3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} dev: true - /once/1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: true - - /optionator/0.9.1: - resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} - engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.3 - dev: true - - /p-limit/3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: true - - /p-locate/5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - dependencies: - p-limit: 3.1.0 - dev: true + /obliterator/1.6.1: + resolution: {integrity: sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==} + dev: false /pako/2.1.0: resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} dev: false - /parent-module/1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - dependencies: - callsites: 3.1.0 - dev: true - - /path-exists/4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true - - /path-is-absolute/1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: true - - /path-key/3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: true - /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true - /path-type/4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: true - /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true @@ -2451,7 +2893,6 @@ packages: /picomatch/2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - dev: true /pify/2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} @@ -2492,7 +2933,7 @@ packages: ts-node: optional: true dependencies: - lilconfig: 2.0.6 + lilconfig: 2.1.0 postcss: 8.4.21 yaml: 1.10.2 dev: true @@ -2528,16 +2969,11 @@ packages: source-map-js: 1.0.2 dev: true - /preact/10.12.1: - resolution: {integrity: sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==} - - /prelude-ls/1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true + /preact/10.13.1: + resolution: {integrity: sha512-KyoXVDU5OqTpG9LXlB3+y639JAGzl8JSBXLn1J9HTSB3gbKcuInga7bZnXLlxmK94ntTs1EFeZp0lrja2AuBYQ==} - /prettier-plugin-tailwindcss/0.2.3_prettier@2.8.4: - resolution: {integrity: sha512-s2N5Dh7Ao5KTV1mao5ZBnn8EKtUcDPJEkGViZIjI0Ij9TTI5zgTz4IHOxW33jOdjHKa8CSjM88scelUiC5TNRQ==} + /prettier-plugin-tailwindcss/0.2.4_prettier@2.8.4: + resolution: {integrity: sha512-wMyugRI2yD8gqmMpZSS8kTA0gGeKozX/R+w8iWE+yiCZL09zY0SvfiHfHabNhjGhzxlQ2S2VuTxPE3T72vppCQ==} engines: {node: '>=12.17.0'} peerDependencies: '@ianvs/prettier-plugin-sort-imports': '*' @@ -2589,23 +3025,31 @@ packages: optional: true dependencies: prettier: 2.8.4 - dev: true + dev: false /prettier/2.8.4: resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==} engines: {node: '>=10.13.0'} hasBin: true - dev: true /propagate/2.0.1: resolution: {integrity: sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==} engines: {node: '>= 8'} dev: false - /punycode/2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - dev: true + /pstree.remy/1.1.8: + resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} + dev: false + + /punycode/1.3.2: + resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} + dev: false + + /querystring/0.2.0: + resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + dev: false /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -2616,31 +3060,31 @@ packages: engines: {node: '>=10'} dev: true - /react-hook-form/7.43.3: - resolution: {integrity: sha512-LV6Fixh+hirrl6dXbM78aB6n//82aKbsNbcofF3wc6nx1UJLu3Jj/gsg1E5C9iISnLX+du8VTUyBUz2aCy+H7w==} + /react-hook-form/7.43.5: + resolution: {integrity: sha512-YcaXhuFHoOPipu5pC7ckxrLrialiOcU91pKu8P+isAcXZyMgByUK9PkI9j5fENO4+6XU5PwWXRGMIFlk9u9UBQ==} engines: {node: '>=12.22.0'} peerDependencies: react: ^16.8.0 || ^17 || ^18 dev: false - /react-router-dom/6.8.1: - resolution: {integrity: sha512-67EXNfkQgf34P7+PSb6VlBuaacGhkKn3kpE51+P6zYSG2kiRoumXEL6e27zTa9+PGF2MNXbgIUHTVlleLbIcHQ==} + /react-router-dom/6.9.0: + resolution: {integrity: sha512-/seUAPY01VAuwkGyVBPCn1OXfVbaWGGu4QN9uj0kCPcTyNYgL1ldZpxZUpRU7BLheKQI4Twtl/OW2nHRF1u26Q==} engines: {node: '>=14'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@remix-run/router': 1.3.2 - react-router: 6.8.1 + '@remix-run/router': 1.4.0 + react-router: 6.9.0 dev: false - /react-router/6.8.1: - resolution: {integrity: sha512-Jgi8BzAJQ8MkPt8ipXnR73rnD7EmZ0HFFb7jdQU24TynGW1Ooqin2KVDN9voSC+7xhqbbCd2cjGUepb6RObnyg==} + /react-router/6.9.0: + resolution: {integrity: sha512-51lKevGNUHrt6kLuX3e/ihrXoXCa9ixY/nVWRLlob4r/l0f45x3SzBvYJe3ctleLUQQ5fVa4RGgJOTH7D9Umhw==} engines: {node: '>=14'} peerDependencies: react: '>=16.8' dependencies: - '@remix-run/router': 1.3.2 + '@remix-run/router': 1.4.0 dev: false /read-cache/1.0.0: @@ -2654,22 +3098,11 @@ packages: engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - dev: true /regenerator-runtime/0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: false - /regexpp/3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true - - /resolve-from/4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - dev: true - /resolve/1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true @@ -2684,15 +3117,8 @@ packages: engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true - /rimraf/3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: true - - /rollup/3.17.2: - resolution: {integrity: sha512-qMNZdlQPCkWodrAZ3qnJtvCAl4vpQ8q77uEujVCCbC/6CLB7Lcmvjq7HyiOSnf4fxTT9XgsE36oLHJBH49xjqA==} + /rollup/3.19.1: + resolution: {integrity: sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -2711,34 +3137,32 @@ packages: tslib: 2.5.0 dev: false + /sax/1.2.1: + resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==} + dev: false + /scale-codec/0.11.0-beta.0: resolution: {integrity: sha512-Qsk2kT8TsXQJty2dyy7i6y4BSg6rT7tCGdQ6vkVReAXXqDpXt10ApkuLM+nWUrwH47mwGZMy0QBovmOErggomw==} dev: false + /scale-codec/0.11.0-beta.1: + resolution: {integrity: sha512-Fkl3D0I6EeY4P4yXrTWmzMIt5EPXm4CY5LXl/7SCg0Ta7ij4JQi0uDnY5Bg8HpX1ew2l2MiVoVGqs43UWoPzJw==} + dev: false + + /semver/5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + dev: false + /semver/6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true dev: true - /semver/7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} - engines: {node: '>=10'} + /semver/7.0.0: + resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /shebang-command/2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: true - - /shebang-regex/3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: true + dev: false /shiki/0.14.1: resolution: {integrity: sha512-+Jz4nBkCBe0mEDqo1eKRcCdjRtrCjozmcbTUjbPTX7OOJfEbTZzlUWlZtGe3Gb5oV1/jnojhG//YZc3rs9zSEw==} @@ -2749,41 +3173,27 @@ packages: vscode-textmate: 8.0.0 dev: false - /slash/3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: true + /simple-update-notifier/1.1.0: + resolution: {integrity: sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==} + engines: {node: '>=8.10.0'} + dependencies: + semver: 7.0.0 + dev: false /source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} dev: true - /strip-ansi/6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: true - - /strip-json-comments/3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true + /strnum/1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + dev: false /supports-color/5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - dev: true - - /supports-color/7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: true /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -2794,10 +3204,12 @@ packages: resolution: {integrity: sha512-WFnDXSS4kFTZwjKg5/oZSGzBRU/l+qcbv5NVTzLUQvJ9yovDAP05h0F2+ZFW0Lw9EcgRoc2AfURUdZvnEFrXKg==} dev: false - /tailwindcss/3.2.7: + /tailwindcss/3.2.7_postcss@8.4.21: resolution: {integrity: sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ==} engines: {node: '>=12.13.0'} hasBin: true + peerDependencies: + postcss: ^8.0.9 dependencies: arg: 5.0.2 chokidar: 3.5.3 @@ -2808,7 +3220,7 @@ packages: fast-glob: 3.2.12 glob-parent: 6.0.2 is-glob: 4.0.3 - lilconfig: 2.0.6 + lilconfig: 2.1.0 micromatch: 4.0.5 normalize-path: 3.0.0 object-hash: 3.0.0 @@ -2826,10 +3238,6 @@ packages: - ts-node dev: true - /text-table/0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true - /to-fast-properties/2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} @@ -2840,18 +3248,35 @@ packages: engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - dev: true + + /touch/3.1.0: + resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==} + hasBin: true + dependencies: + nopt: 1.0.10 + dev: false /tr46/0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: false - /tsconfck/2.0.3_typescript@4.9.5: - resolution: {integrity: sha512-o3DsPZO1+C98KqHMdAbWs30zpxD30kj8r9OLA4ML1yghx4khNDzaaShNalfluh8ZPPhzKe3qyVCP1HiZszSAsw==} + /tsconfck/2.1.0: + resolution: {integrity: sha512-lztI9ohwclQHISVWrM/hlcgsRpphsii94DV9AQtAw2XJSVNiv+3ppdEsrL5J+xc5oTeHXe1qDqlOAGw8VSa9+Q==} + engines: {node: ^14.13.1 || ^16 || >=18} + hasBin: true + peerDependencies: + typescript: ^4.3.5 || ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + dev: false + + /tsconfck/2.1.0_typescript@4.9.5: + resolution: {integrity: sha512-lztI9ohwclQHISVWrM/hlcgsRpphsii94DV9AQtAw2XJSVNiv+3ppdEsrL5J+xc5oTeHXe1qDqlOAGw8VSa9+Q==} engines: {node: ^14.13.1 || ^16 || >=18} hasBin: true peerDependencies: - typescript: ^4.3.5 + typescript: ^4.3.5 || ^5.0.0 peerDependenciesMeta: typescript: optional: true @@ -2861,38 +3286,16 @@ packages: /tslib/1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true + dev: false /tslib/2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} dev: false - /tsutils/3.21.0_typescript@4.9.5: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 4.9.5 - dev: true - /tweetnacl/1.0.3: resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} dev: false - /type-check/0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.2.1 - dev: true - - /type-fest/0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true - /type/1.2.0: resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} dev: false @@ -2907,11 +3310,29 @@ packages: is-typedarray: 1.0.0 dev: false + /typesafe-dynamodb/0.2.3: + resolution: {integrity: sha512-VnmPNZSriAnjZe6KvsBTLnqyK1Um8SoIdbCNL4DiEc4k+fmA80gNU3UFk1iBNGhgpB0Gsrghlp68OsSH40eQIA==} + dependencies: + '@aws-sdk/client-dynamodb': 3.289.0 + '@aws-sdk/lib-dynamodb': 3.289.0_3rl7i6elqszk3pwsnbi4fnwb6i + '@aws-sdk/smithy-client': 3.289.0 + '@aws-sdk/types': 3.289.0 + '@aws-sdk/util-dynamodb': 3.289.0 + '@types/aws-lambda': 8.10.111 + aws-sdk: 2.1333.0 + transitivePeerDependencies: + - aws-crt + dev: false + /typescript/4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true + /undefsafe/2.0.5: + resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} + dev: false + /update-browserslist-db/1.0.10_browserslist@4.21.5: resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true @@ -2923,11 +3344,18 @@ packages: picocolors: 1.0.0 dev: true - /uri-js/4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + /url/0.10.3: + resolution: {integrity: sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==} dependencies: - punycode: 2.3.0 - dev: true + punycode: 1.3.2 + querystring: 0.2.0 + dev: false + + /use-sync-external-store/1.2.0: + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dev: false /utf-8-validate/5.0.10: resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} @@ -2941,12 +3369,48 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true + /util/0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.10 + which-typed-array: 1.1.9 + dev: false + + /uuid/8.0.0: + resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==} + hasBin: true + dev: false + + /uuid/8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: false + + /vary/1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: false + + /vite-tsconfig-paths/4.0.5: + resolution: {integrity: sha512-/L/eHwySFYjwxoYt1WRJniuK/jPv+WGwgRGBYx3leciR5wBeqntQpUE6Js6+TJemChc+ter7fDBKieyEWDx4yQ==} + dependencies: + debug: 4.3.4 + globrex: 0.1.2 + tsconfck: 2.1.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + /vite-tsconfig-paths/4.0.5_typescript@4.9.5: resolution: {integrity: sha512-/L/eHwySFYjwxoYt1WRJniuK/jPv+WGwgRGBYx3leciR5wBeqntQpUE6Js6+TJemChc+ter7fDBKieyEWDx4yQ==} dependencies: debug: 4.3.4 globrex: 0.1.2 - tsconfck: 2.0.3_typescript@4.9.5 + tsconfck: 2.1.0_typescript@4.9.5 transitivePeerDependencies: - supports-color - typescript @@ -2980,7 +3444,7 @@ packages: esbuild: 0.16.17 postcss: 8.4.21 resolve: 1.22.1 - rollup: 3.17.2 + rollup: 3.19.1 optionalDependencies: fsevents: 2.3.2 dev: true @@ -3022,25 +3486,20 @@ packages: webidl-conversions: 3.0.1 dev: false - /which/2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + /which-typed-array/1.1.9: + resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + engines: {node: '>= 0.4'} dependencies: - isexe: 2.0.0 - dev: true - - /word-wrap/1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} - engines: {node: '>=0.10.0'} - dev: true - - /wrappy/1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + is-typed-array: 1.1.10 + dev: false - /ws/8.12.1: - resolution: {integrity: sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==} + /ws/8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -3052,6 +3511,18 @@ packages: optional: true dev: false + /xml2js/0.4.19: + resolution: {integrity: sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==} + dependencies: + sax: 1.2.1 + xmlbuilder: 9.0.7 + dev: false + + /xmlbuilder/9.0.7: + resolution: {integrity: sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ==} + engines: {node: '>=4.0'} + dev: false + /xtend/4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -3066,20 +3537,11 @@ packages: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} dev: true - /yallist/4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true - /yaml/1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} dev: true - /yocto-queue/0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true - - /zod/3.20.6: - resolution: {integrity: sha512-oyu0m54SGCtzh6EClBVqDDlAYRz4jrVtKwQ7ZnsEmMI9HnzuZFj8QFwAY1M5uniIYACdGvv0PBWPF2kO0aNofA==} + /zod/3.21.4: + resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} dev: false diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..ef6e299e --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +packages: + - common + - server + - www diff --git a/server/db.ts b/server/db.ts new file mode 100644 index 00000000..39210f3f --- /dev/null +++ b/server/db.ts @@ -0,0 +1,30 @@ +import { DynamoDBClient } from "@aws-sdk/client-dynamodb" +import { DynamoDBDocument } from "@aws-sdk/lib-dynamodb" +import { TypeSafeDeleteDocumentCommand } from "typesafe-dynamodb/lib/delete-document-command.js" +import { TypeSafeDocumentClientV3 } from "typesafe-dynamodb/lib/document-client-v3.js" +import { TypeSafeGetDocumentCommand } from "typesafe-dynamodb/lib/get-document-command.js" +import { TypeSafePutDocumentCommand } from "typesafe-dynamodb/lib/put-document-command.js" +import { TypeSafeQueryDocumentCommand } from "typesafe-dynamodb/lib/query-document-command.js" +import { TypeSafeScanDocumentCommand } from "typesafe-dynamodb/lib/scan-document-command.js" +import { TypeSafeUpdateDocumentCommand } from "typesafe-dynamodb/lib/update-document-command.js" +import { Model } from "./models.js" +import "dotenv" + +export const client = DynamoDBDocument.from( + new DynamoDBClient({ + region: "us-east-1", + credentials: { + accessKeyId: process.env.AWS_ACCESS_KEY_ID!, + secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!, + }, + }), +) as unknown as TypeSafeDocumentClientV3 + +export const Put = TypeSafePutDocumentCommand() +export const Delete = TypeSafeDeleteDocumentCommand() +export const Query = TypeSafeQueryDocumentCommand() +export const Scan = TypeSafeScanDocumentCommand() +export const Update = TypeSafeUpdateDocumentCommand() +export const Get = TypeSafeGetDocumentCommand() + +export const TableName = "capi_multisig" diff --git a/server/index.ts b/server/index.ts new file mode 100644 index 00000000..d51c7cc2 --- /dev/null +++ b/server/index.ts @@ -0,0 +1,23 @@ +import { initTRPC } from "@trpc/server" +import * as $ from "scale-codec" + +const t = initTRPC.create() + +const $params = $.object( + $.field("greeting", $.str), + $.field("name", $.str), +) + +export type router = typeof router +export const router = t.router({ + something: t.procedure + .input((params) => { + $.assert($params, params) + return params + }) + .query((req) => { + const { greeting, name } = req.input + console.log(greeting, name) + return `${greeting} ${name}` + }), +}) diff --git a/server/main.ts b/server/main.ts new file mode 100644 index 00000000..12086eb4 --- /dev/null +++ b/server/main.ts @@ -0,0 +1,18 @@ +import { createHTTPServer } from "@trpc/server/adapters/standalone" +import cors from "cors" +import { router } from "./index.js" +import "dotenv" + +const server = createHTTPServer({ + router, + createContext() { + // TODO + return {} + }, + middleware: cors(), + batching: { enabled: true }, +}) + +const PORT = 3210 +server.listen(PORT) +console.log(`Listening on "http://localhost:${PORT}/"`) diff --git a/server/models.ts b/server/models.ts new file mode 100644 index 00000000..14f2440a --- /dev/null +++ b/server/models.ts @@ -0,0 +1,47 @@ +export type Model = Setup | Account + +export interface Setup { + type: "setup" + /** The stash accountId */ + id: string + /** The genesis hash of the setup's network */ + genesisHash: string + /** A human-readable name for the setup */ + name: string + /** member accountIds */ + members: [user: string, proxy?: string][] + /** The number of signatories a proposal need in order to be executed */ + threshold: number + /** The underlying multisig accountId */ + multisig: string + /** The underlying pure proxy accountId */ + stash: string + /** Previous actions of the setup */ + history: HistoryItem[] +} + +export interface HistoryItem { + /** The scale-encoded call data */ + callData: string + /** Time point of the first approval */ + timePoint: [blockNumber: number, txIndex: number] + /** All votes, the first of which is the initiator */ + approvals: Approvals[] + /** Whether the proposal was cancelled */ + cancelled?: string +} + +export interface Approvals { + /** The block at which the approval was finalized */ + blockHash: string + /** The accountId of the voting user */ + member: string +} + +export interface Account { + type: "account" + /** hex-encoded accountId */ + id: string + /** The setups of which the account is member */ + setups: string[] +} diff --git a/server/package.json b/server/package.json new file mode 100644 index 00000000..22b81e8c --- /dev/null +++ b/server/package.json @@ -0,0 +1,21 @@ +{ + "name": "server", + "private": true, + "type": "module", + "dependencies": { + "@aws-sdk/client-dynamodb": "^3.288.0", + "@aws-sdk/lib-dynamodb": "^3.288.0", + "@trpc/server": "^10.14.1", + "common": "workspace:../common", + "cors": "^2.8.5", + "dotenv": "^16.0.3", + "nodemon": "^2.0.21", + "typesafe-dynamodb": "^0.2.3" + }, + "devDependencies": { + "@types/cors": "^2.8.13" + }, + "scripts": { + "watch": "nodemon dist/main.js" + } +} diff --git a/server/tsconfig.json b/server/tsconfig.json new file mode 100644 index 00000000..8a7cb867 --- /dev/null +++ b/server/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "outDir": "dist" + }, + "extends": "../tsconfig.base.json", + "include": ["."], + "references": [{ "path": "../common" }] +} diff --git a/src/components/Button.tsx b/src/components/Button.tsx deleted file mode 100644 index e23b83bf..00000000 --- a/src/components/Button.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import classNames from 'clsx' -import { JSX } from 'preact' -import type { ComponentChildren } from 'preact' - -export const Button = ({ - variant = 'primary', - size = 'md', - disabled, - className, - iconLeft, - iconRight, - full, - children, - ...rest -}: JSX.IntrinsicAttributes & - Omit, 'size'> & { - variant?: 'primary' | 'secondary' | 'ghost' | 'danger' - size?: 'md' | 'xl' - full?: boolean - iconLeft?: ComponentChildren - iconRight?: ComponentChildren - }) => { - const iconClassName = classNames( - 'flex items-center ', - { - 'h-6 w-6': size === 'md', - }, - { - 'h-9 w-9 text-2xl': size === 'xl', - }, - ) - return ( - - ) -} diff --git a/src/components/Tabs.tsx b/src/components/Tabs.tsx deleted file mode 100644 index 49040656..00000000 --- a/src/components/Tabs.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import classNames from 'clsx' -import { NavLink } from 'react-router-dom' - -export interface Tab { - name: string - href: string - disabled?: boolean -} - -export function Tabs({ tabs, className }: { tabs: Tab[]; className?: string }) { - return ( - - ) -} diff --git a/src/components/wizard/index.ts b/src/components/wizard/index.ts deleted file mode 100644 index 6eda2e7f..00000000 --- a/src/components/wizard/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './Wizard' -export * from './MultisigInit' -export * from './MultisigMembers' -export * from './MultisigFund' -export * from './MultisigSummary' diff --git a/src/main.tsx b/src/main.tsx deleted file mode 100644 index e1948163..00000000 --- a/src/main.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { createBrowserRouter, RouterProvider } from 'react-router-dom' -import { render } from 'preact' -import { Dashboard } from './pages/dashboard' -import { CreateMultisig } from './pages/create-multisig' -import { PageError } from './pages/error' -import './index.css' - -const errorElement = - -const router = createBrowserRouter([ - { - path: '/', - element: , - errorElement, - }, - { - path: '/create-multisig', - element: , - errorElement, - }, -]) - -const Main = () => -render(
, document.getElementById('app') as HTMLElement) diff --git a/src/pages/dashboard.tsx b/src/pages/dashboard.tsx deleted file mode 100644 index 7f833962..00000000 --- a/src/pages/dashboard.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { Page } from './templates/base' -import { CenteredCard } from '../components/CenteredCard' -import { Link } from 'react-router-dom' -import { Button } from '../components/Button' -import { IconPlus } from '../components/icons/IconPlus' - -export function Dashboard() { - return ( - - - -
- -
- -
-
- ) -} diff --git a/src/signals/index.ts b/src/signals/index.ts deleted file mode 100644 index cd504a73..00000000 --- a/src/signals/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './accounts' diff --git a/src/util/localStorage.ts b/src/util/localStorage.ts deleted file mode 100644 index 09675a5b..00000000 --- a/src/util/localStorage.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Wallet, WalletAccount } from '@talisman-connect/wallets' - -export function retrieveStored(key: 'defaultAccount'): WalletAccount | undefined -export function retrieveStored(key: 'defaultExtension'): Wallet | undefined -export function retrieveStored(key: 'defaultExtension' | 'defaultAccount') { - const stored = localStorage.getItem(key) - if (stored) { - try { - return JSON.parse(stored) as WalletAccount | Wallet | undefined - } catch (error) { - console.error(`Could not retrieve ${key}`, error) - } - } -} diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts deleted file mode 100644 index 11f02fe2..00000000 --- a/src/vite-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/tailwind.config.cjs b/tailwind.config.cjs deleted file mode 100644 index 38fc594f..00000000 --- a/tailwind.config.cjs +++ /dev/null @@ -1,25 +0,0 @@ -module.exports = { - content: ['./src/**/*.{js,ts,jsx,tsx}'], - theme: { - extend: { - colors: { - button: { - DEFAULT: '#321D47', - secondary: '#DAE0F2', - 'secondary-text': '#000000E3', - danger: '#FD4935', - }, - tabs: { - DEFAULT: '#E6007A', - text: '#111827', - dimmed: '#6C6B80', - }, - }, - }, - }, - plugins: [ - require('@tailwindcss/forms'), - require('@tailwindcss/line-clamp'), - require('prettier-plugin-tailwindcss'), - ], -} diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 00000000..f5e2e4b6 --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,36 @@ +{ + "compilerOptions": { + "allowJs": false, + "allowSyntheticDefaultImports": false, + "alwaysStrict": true, + "composite": true, + "downlevelIteration": true, + "esModuleInterop": false, + "forceConsistentCasingInFileNames": true, + "incremental": true, + "isolatedModules": true, + "jsx": "react-jsx", + "jsxImportSource": "preact", + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "module": "ESNext", + "moduleResolution": "nodenext", + "noFallthroughCasesInSwitch": true, + "noImplicitAny": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noUncheckedIndexedAccess": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "strictBindCallApply": true, + "strictNullChecks": true, + "strictPropertyInitialization": true, + "stripInternal": true, + "target": "ESNext", + "typeRoots": ["node_modules/@types"], + "useDefineForClassFields": true + }, + "exclude": ["**/*.d.ts", "**/*.js", "node_modules"] +} diff --git a/tsconfig.json b/tsconfig.json index 93752e3d..858d04f6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,26 +1,8 @@ { - "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "lib": ["DOM", "DOM.Iterable", "ESNext"], - "allowJs": false, - "skipLibCheck": true, - "esModuleInterop": false, - "allowSyntheticDefaultImports": true, - "strict": true, - "forceConsistentCasingInFileNames": true, - "module": "ESNext", - "moduleResolution": "Node", - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx", - "jsxImportSource": "preact" - }, - "include": ["src"], - "references": [{ "path": "./tsconfig.node.json" }], - "paths": { - "pages": ["src/pages"], - "signals": ["src/signals"] - } + "files": [], + "references": [ + { "path": "www" }, + { "path": "server" }, + { "path": "common" } + ] } diff --git a/tsconfig.node.json b/tsconfig.node.json deleted file mode 100644 index 9d31e2ae..00000000 --- a/tsconfig.node.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "module": "ESNext", - "moduleResolution": "Node", - "allowSyntheticDefaultImports": true - }, - "include": ["vite.config.ts"] -} diff --git a/vite.config.ts b/vite.config.ts deleted file mode 100644 index 7cd55d01..00000000 --- a/vite.config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { defineConfig } from 'vite' -import preact from '@preact/preset-vite' -import tsConfigPaths from 'vite-tsconfig-paths' - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [preact(), tsConfigPaths()], - build: { - target: 'esnext', - }, -}) diff --git a/words.txt b/words.txt index e5592f1d..f76e9a6f 100644 --- a/words.txt +++ b/words.txt @@ -1,39 +1,43 @@ +amannn +andreea +asynciterable +azuretools bradlc capi clsx compat csstools dbaeumer -eslint -polkadot -amannn -asynciterable -azuretools -capi deno -Polkadot -headlessui -typesafe -multisigs denoland deployctl dprint esbenp +eslint +hasher +hashers +headlessui +hmirror +hookform karlkallavus +ltex +MORFOLOGIK multiaddress +multisigs +nodenext pnpm +polkadot preact +quazar +rroot sastan tailwind tailwindcss +tanstack +trpc +tsbuildinfo twind typesafe vite -westend -hashers -Hasher -rroot -quazar -hmirror vmirror -hookform +westend diff --git a/index.html b/www/index.html similarity index 100% rename from index.html rename to www/index.html diff --git a/www/package.json b/www/package.json new file mode 100644 index 00000000..e2b894f7 --- /dev/null +++ b/www/package.json @@ -0,0 +1,44 @@ +{ + "name": "www", + "private": true, + "type": "module", + "dependencies": { + "@headlessui/react": "^1.7.11", + "@hookform/resolvers": "^2.9.11", + "@preact/signals": "^1.1.3", + "@talisman-connect/wallets": "^1.1.3", + "@tanstack/react-query": "^4.26.1", + "@trpc/client": "^10.14.1", + "@trpc/react-query": "^10.15.0", + "@trpc/server": "^10.14.1", + "common": "workspace:../common", + "preact": "^10.12.1", + "prettier-plugin-tailwindcss": "^0.2.4", + "react-hook-form": "^7.43.3", + "react-router-dom": "^6.8.1", + "server": "workspace:../server", + "tailwind-merge": "^1.10.0", + "vite-tsconfig-paths": "^4.0.5" + }, + "devDependencies": { + "@babel/core": ">=7.12.10 <8.0.0", + "@preact/preset-vite": "^2.5.0", + "@tailwindcss/forms": "^0.5.3", + "@tailwindcss/line-clamp": "^0.4.2", + "autoprefixer": "^10.4.13", + "clsx": "^1.2.1", + "postcss": "^8.4.21", + "prettier": "^2.8.4", + "tailwindcss": "^3.2.7", + "vite": "^4.1.4" + }, + "resolutions": { + "react": "preact/compat", + "react-dom": "preact/compat" + }, + "scripts": { + "watch": "vite", + "build": "vite build", + "preview": "vite preview" + } +} diff --git a/postcss.config.cjs b/www/postcss.config.cjs similarity index 100% rename from postcss.config.cjs rename to www/postcss.config.cjs diff --git a/public/vite.svg b/www/public/vite.svg similarity index 100% rename from public/vite.svg rename to www/public/vite.svg diff --git a/src/assets/polkadot.svg b/www/src/assets/polkadot.svg similarity index 100% rename from src/assets/polkadot.svg rename to www/src/assets/polkadot.svg diff --git a/src/assets/preact.svg b/www/src/assets/preact.svg similarity index 100% rename from src/assets/preact.svg rename to www/src/assets/preact.svg diff --git a/src/components/AccountSelect.tsx b/www/src/components/AccountSelect.tsx similarity index 78% rename from src/components/AccountSelect.tsx rename to www/src/components/AccountSelect.tsx index b57cbaea..ca72052f 100644 --- a/src/components/AccountSelect.tsx +++ b/www/src/components/AccountSelect.tsx @@ -1,12 +1,12 @@ -import { Listbox, Transition } from '@headlessui/react' -import { WalletAccount } from '@talisman-connect/wallets' -import { Fragment } from 'preact/jsx-runtime' -import { accounts, defaultAccount } from '../signals' -import { IconChevronUpDown } from './icons/IconChevronUpDown' +import { Listbox, Transition } from "@headlessui/react" +import { WalletAccount } from "@talisman-connect/wallets" +import { Fragment } from "preact/jsx-runtime" +import { accounts, defaultAccount } from "../signals/index.js" +import { IconChevronUpDown } from "./icons/IconChevronUpDown.js" const placeholder = { - name: 'No account found', - address: '-', + name: "No account found", + address: "-", } export default function AccountSelect() { @@ -43,16 +43,15 @@ export default function AccountSelect() { key={acc.address} className={({ active }: { active: boolean }) => `relative cursor-default select-none py-2 pl-10 pr-4 ${ - active ? 'bg-gray-100 text-gray-900' : 'text-gray-900' - }` - } + active ? "bg-gray-100 text-gray-900" : "text-gray-900" + }`} value={acc} > {({ selected }: { selected: boolean }) => ( <> {acc.name} diff --git a/www/src/components/Button.tsx b/www/src/components/Button.tsx new file mode 100644 index 00000000..367466ee --- /dev/null +++ b/www/src/components/Button.tsx @@ -0,0 +1,73 @@ +import { clsx } from "clsx" +import { JSX } from "preact" +import type { ComponentChildren } from "preact" + +export const Button = ({ + variant = "primary", + size = "md", + disabled, + className, + iconLeft, + iconRight, + full, + children, + ...rest +}: + & JSX.IntrinsicAttributes + & Omit, "size"> + & { + variant?: "primary" | "secondary" | "ghost" | "danger" + size?: "md" | "xl" + full?: boolean + iconLeft?: ComponentChildren + iconRight?: ComponentChildren + }) => +{ + const iconClassName = clsx( + "flex items-center ", + { + "h-6 w-6": size === "md", + }, + { + "h-9 w-9 text-2xl": size === "xl", + }, + ) + return ( + + ) +} diff --git a/src/components/CenteredCard.tsx b/www/src/components/CenteredCard.tsx similarity index 85% rename from src/components/CenteredCard.tsx rename to www/src/components/CenteredCard.tsx index 21fafc2b..46fc25cd 100644 --- a/src/components/CenteredCard.tsx +++ b/www/src/components/CenteredCard.tsx @@ -1,4 +1,4 @@ -import { ComponentChildren } from 'preact' +import { ComponentChildren } from "preact" interface Props { children: ComponentChildren diff --git a/www/src/components/Tabs.tsx b/www/src/components/Tabs.tsx new file mode 100644 index 00000000..3463fad9 --- /dev/null +++ b/www/src/components/Tabs.tsx @@ -0,0 +1,49 @@ +import { clsx } from "clsx" +import { NavLink } from "react-router-dom" + +export interface Tab { + name: string + href: string + disabled?: boolean +} + +export function Tabs({ tabs, className }: { tabs: Tab[]; className?: string }) { + return ( + + ) +} diff --git a/src/components/TopBar.tsx b/www/src/components/TopBar.tsx similarity index 59% rename from src/components/TopBar.tsx rename to www/src/components/TopBar.tsx index 8aa5f868..b1cf44a7 100644 --- a/src/components/TopBar.tsx +++ b/www/src/components/TopBar.tsx @@ -1,10 +1,9 @@ -import AccountSelect from './AccountSelect' -import { Tabs } from './Tabs' -import type { Tab } from './Tabs' +import AccountSelect from "./AccountSelect.js" +import { type Tab, Tabs } from "./Tabs.js" const tabs: Tab[] = [ - { name: 'Dashboard', href: '/' }, - { name: 'Transaction history', href: '/transaction-history', disabled: true }, + { name: "Dashboard", href: "/" }, + { name: "Transaction history", href: "/transaction-history", disabled: true }, ] export function TopBar() { diff --git a/src/components/icons/IconChevronUpDown.tsx b/www/src/components/icons/IconChevronUpDown.tsx similarity index 90% rename from src/components/icons/IconChevronUpDown.tsx rename to www/src/components/icons/IconChevronUpDown.tsx index 7dcd365f..044a37f9 100644 --- a/src/components/icons/IconChevronUpDown.tsx +++ b/www/src/components/icons/IconChevronUpDown.tsx @@ -1,4 +1,4 @@ -import { JSX } from 'preact/jsx-runtime' +import { JSX } from "preact/jsx-runtime" export const IconChevronUpDown = ( props: JSX.IntrinsicAttributes & JSX.SVGAttributes, diff --git a/src/components/icons/IconPlus.tsx b/www/src/components/icons/IconPlus.tsx similarity index 88% rename from src/components/icons/IconPlus.tsx rename to www/src/components/icons/IconPlus.tsx index e58282eb..ad15afd6 100644 --- a/src/components/icons/IconPlus.tsx +++ b/www/src/components/icons/IconPlus.tsx @@ -1,4 +1,4 @@ -import { JSX } from 'preact/jsx-runtime' +import { JSX } from "preact/jsx-runtime" export const IconPlus = ( props: JSX.IntrinsicAttributes & JSX.SVGAttributes, diff --git a/src/components/identicon/Identicon.tsx b/www/src/components/identicon/Identicon.tsx similarity index 72% rename from src/components/identicon/Identicon.tsx rename to www/src/components/identicon/Identicon.tsx index 85859401..90091422 100644 --- a/src/components/identicon/Identicon.tsx +++ b/www/src/components/identicon/Identicon.tsx @@ -1,13 +1,13 @@ -import classNames from 'clsx' -import { useCallback } from 'preact/hooks' +import { clsx } from "clsx" +import { useCallback } from "preact/hooks" import { Circle, getCircleXY, OUTER_CIRCLE, renderCircle, Z, -} from './utils/circles' -import { getColors } from './utils/colors' +} from "./utils/circles.js" +import { getColors } from "./utils/colors.js" interface IdenticonProps { size: number @@ -33,25 +33,25 @@ export const Identicon = ({ }: IdenticonProps) => { const xy = getCircleXY() - const defaultColors = - initialColors || new Array(xy.length).fill('#ddd') + const defaultColors = initialColors + || new Array(xy.length).fill("#ddd") const colors = address ? initialColors || getColors(address) : defaultColors - const copyToClipboard = useCallback(() => { + const copyToClipboard = useCallback(async () => { if (disableClipboardCopy) { return } if (navigator) { - navigator.clipboard.writeText(address) + await navigator.clipboard.writeText(address) } }, [address]) return (
@@ -68,7 +68,7 @@ export const Identicon = ({ ([cx, cy], index): Circle => ({ cx, cy, - fill: colors[index], + fill: colors[index]!, r: Z, }), ), diff --git a/src/components/identicon/utils/circles.tsx b/www/src/components/identicon/utils/circles.tsx similarity index 98% rename from src/components/identicon/utils/circles.tsx rename to www/src/components/identicon/utils/circles.tsx index 4c19fa76..5f18109a 100644 --- a/src/components/identicon/utils/circles.tsx +++ b/www/src/components/identicon/utils/circles.tsx @@ -17,7 +17,7 @@ export const Z = (S / 64) * 5 export const OUTER_CIRCLE: Circle = { cx: C, cy: C, - fill: 'transparent', + fill: "transparent", r: C, } diff --git a/src/components/identicon/utils/colors.tsx b/www/src/components/identicon/utils/colors.tsx similarity index 53% rename from src/components/identicon/utils/colors.tsx rename to www/src/components/identicon/utils/colors.tsx index 07d38f54..5376ffab 100644 --- a/src/components/identicon/utils/colors.tsx +++ b/www/src/components/identicon/utils/colors.tsx @@ -1,12 +1,13 @@ -import { ss58, hashers } from 'capi' -import { findScheme, SCHEMA } from './scheme' +import { hashers, ss58 } from "capi" +import { findScheme, SCHEMA } from "./scheme.js" /* A generic identity icon, taken from https://github.com/polkadot-js/ui/tree/master/packages/react-identicon */ -const Blake2_512 = new hashers.Blake2Hasher(512 as any, false) +// TODO: remove `as never` upon upgrading to latest version of Capi +const Blake2_512 = new hashers.Blake2Hasher(512 as never, false) const zeroHash = Blake2_512.hash(new Uint8Array(32)) @@ -15,10 +16,7 @@ function addressToId(address: string): Uint8Array { prefix: number, pubKey: Uint8Array, ] - - return Blake2_512.hash(pubKey).map( - (x, i) => (x + 256 - zeroHash[i]) % 256, - ) + return Blake2_512.hash(pubKey).map((x, i) => (x + 256 - zeroHash[i]!) % 256) } export function getColorsNew(address: string): string[] { @@ -26,28 +24,28 @@ export function getColorsNew(address: string): string[] { .map((s): number => s.freq) .reduce((a, b): number => a + b) const id = addressToId(address) - const d = Math.floor((id[30] + id[31] * 256) % total) - const rot = (id[28] % 6) * 3 - const sat = Math.floor((id[29] * 70) / 256 + 26) % 80 + const d = Math.floor((id[30]! + id[31]! * 256) % total) + const rot = (id[28]! % 6) * 3 + const sat = Math.floor((id[29]! * 70) / 256 + 26) % 80 const alignedSat = sat < 40 ? sat + 50 : sat < 70 ? sat + 30 : sat const scheme = findScheme(d) - const palette = Array.from(id).map((x, i): string => { + const palette = Array.from(id).map((x, i) => { const b = (x + (i % 28) * 58) % 256 if (b === 0) { - return '#444' + return "#444" } else if (b === 255) { - return 'transparent' + return "transparent" } const h = Math.floor(((b % 64) * 360) / 64) - const l = [40, 45, 50, 55][Math.floor(b / 64)] + const l = [40, 45, 50, 55][Math.floor(b / 64)!]! return `hsl(${h}, ${alignedSat}%, ${l}%)` }) - return scheme.colors.map( - (_, i): string => palette[scheme.colors[i < 18 ? (i + rot) % 18 : 18]], + return scheme.colors.map((_, i) => + palette[scheme.colors[i < 18 ? (i + rot) % 18 : 18]!]! ) } @@ -56,26 +54,26 @@ export function getColors(address: string): string[] { .map((s): number => s.freq) .reduce((a, b): number => a + b) const id = addressToId(address) - const d = Math.floor((id[30] + id[31] * 256) % total) - const rot = (id[28] % 6) * 3 - const sat = (Math.floor((id[29] * 70) / 256 + 26) % 80) + 30 + const d = Math.floor((id[30]! + id[31]! * 256) % total) + const rot = (id[28]! % 6) * 3 + const sat = (Math.floor((id[29]! * 70) / 256 + 26) % 80) + 30 const scheme = findScheme(d) - const palette = Array.from(id).map((x, i): string => { + const palette = Array.from(id).map((x, i) => { const b = (x + (i % 28) * 58) % 256 if (b === 0) { - return '#444' + return "#444" } else if (b === 255) { - return 'transparent' + return "transparent" } const h = Math.floor(((b % 64) * 360) / 64) - const l = [53, 15, 35, 75][Math.floor(b / 64)] + const l = [53, 15, 35, 75][Math.floor(b / 64)!]! return `hsl(${h}, ${sat}%, ${l}%)` }) - return scheme.colors.map( - (_, i): string => palette[scheme.colors[i < 18 ? (i + rot) % 18 : 18]], + return scheme.colors.map((_, i): string => + palette[scheme.colors[i < 18 ? (i + rot) % 18 : 18]!]! ) } diff --git a/src/components/identicon/utils/scheme.tsx b/www/src/components/identicon/utils/scheme.tsx similarity index 96% rename from src/components/identicon/utils/scheme.tsx rename to www/src/components/identicon/utils/scheme.tsx index 4688478e..cacb0684 100644 --- a/src/components/identicon/utils/scheme.tsx +++ b/www/src/components/identicon/utils/scheme.tsx @@ -48,7 +48,7 @@ export function findScheme(d: number): Scheme { }) if (!schema) { - throw new Error('Unable to find schema') + throw new Error("Unable to find schema") } return schema diff --git a/src/components/wizard/MultisigFund.tsx b/www/src/components/wizard/MultisigFund.tsx similarity index 73% rename from src/components/wizard/MultisigFund.tsx rename to www/src/components/wizard/MultisigFund.tsx index 59add8c1..b5ba9e55 100644 --- a/src/components/wizard/MultisigFund.tsx +++ b/www/src/components/wizard/MultisigFund.tsx @@ -1,14 +1,13 @@ -import { useForm } from 'react-hook-form' -import { zodResolver } from '@hookform/resolvers/zod' -import * as z from 'zod' -import { signal } from '@preact/signals' -import type { Signal } from '@preact/signals' - -import { Button } from '../Button' -import { useWizardNavigation, useWizardFormDataStep } from './Wizard' +import { zodResolver } from "@hookform/resolvers/zod/dist/zod.js" +import { signal } from "@preact/signals" +import type { Signal } from "@preact/signals" +import { useForm } from "react-hook-form" +import { z } from "zod" +import { Button } from "../Button.js" +import { useWizardFormDataStep, useWizardNavigation } from "./Wizard.js" export const multisigFundSchema = z.object({ - fund: z.number().min(1, { message: 'Fund must be greater than 0' }), + fund: z.number().min(1, { message: "Fund must be greater than 0" }), }) export type MultisigFundEntity = z.infer @@ -25,11 +24,12 @@ export function MultisigFund() { formState: { errors }, } = useForm({ resolver: zodResolver(multisigFundSchema), - mode: 'onChange', + mode: "onChange", }) const { goNext, goPrev } = useWizardNavigation() - const { formDataStep, updateFormDataStep } = - useWizardFormDataStep() + const { formDataStep, updateFormDataStep } = useWizardFormDataStep< + MultisigFundEntity + >() const onSubmit = (formDataNew: MultisigFundEntity) => { updateFormDataStep(formDataNew) @@ -49,7 +49,7 @@ export function MultisigFund() { Fund the multisig: * export function createDefaultMultisigInit(): Signal { return signal({ - name: '', + name: "", }) } @@ -25,11 +24,12 @@ export function MultisigInit() { formState: { errors }, } = useForm({ resolver: zodResolver(multisigInitSchema), - mode: 'onChange', + mode: "onChange", }) const { goNext } = useWizardNavigation() - const { formDataStep, updateFormDataStep } = - useWizardFormDataStep() + const { formDataStep, updateFormDataStep } = useWizardFormDataStep< + MultisigInitEntity + >() const onSubmit = (formDataNew: MultisigInitEntity) => { updateFormDataStep(formDataNew) @@ -44,7 +44,7 @@ export function MultisigInit() { Multisig Name: * true // TODO: update when function added export const multisigMemberSchema = z.object({ member: z.string({}).refine(isValidAddress, { - message: 'Invalid address', + message: "Invalid address", }), }) export type MultisigMemberEntity = z.infer export function createDefaultMembers(): Signal { return signal({ - member: '', + member: "", }) } @@ -28,11 +27,12 @@ export function MultisigMembers() { formState: { errors }, } = useForm({ resolver: zodResolver(multisigMemberSchema), - mode: 'onChange', + mode: "onChange", }) const { goNext, goPrev } = useWizardNavigation() - const { formDataStep, updateFormDataStep } = - useWizardFormDataStep() + const { formDataStep, updateFormDataStep } = useWizardFormDataStep< + MultisigMemberEntity + >() const onSubmit = (formDataNew: MultisigMemberEntity) => { updateFormDataStep(formDataNew) @@ -52,7 +52,7 @@ export function MultisigMembers() { Member: * new QueryClient()) + const [trpcClient] = useState(() => + trpc.createClient({ + links: [ + httpBatchLink({ + url: `http://localhost:3210`, + }), + ], + }) + ) + + return ( + + + + + + ) +} + +const router = createBrowserRouter([ + { + path: "/", + element: , + errorElement: , + }, + { + path: "/create-multisig", + element: , + errorElement: , + }, +]) + +render(
, document.getElementById("app")!) diff --git a/src/pages/create-multisig.tsx b/www/src/pages/create-multisig.tsx similarity index 71% rename from src/pages/create-multisig.tsx rename to www/src/pages/create-multisig.tsx index 8e0dabce..92fb4f79 100644 --- a/src/pages/create-multisig.tsx +++ b/www/src/pages/create-multisig.tsx @@ -1,12 +1,12 @@ -import { Page } from './templates/base' -import { CenteredCard } from '../components/CenteredCard' +import { CenteredCard } from "../components/CenteredCard.js" import { - Wizard, + MultisigFund, MultisigInit, MultisigMembers, - MultisigFund, MultisigSummary, -} from '../components/wizard' + Wizard, +} from "../components/wizard/index.js" +import { Page } from "./templates/base.js" export function CreateMultisig() { return ( diff --git a/www/src/pages/dashboard.tsx b/www/src/pages/dashboard.tsx new file mode 100644 index 00000000..26f7b8a1 --- /dev/null +++ b/www/src/pages/dashboard.tsx @@ -0,0 +1,23 @@ +import { Link } from "react-router-dom" +import { Button } from "../components/Button.js" +import { CenteredCard } from "../components/CenteredCard.js" +import { IconPlus } from "../components/icons/IconPlus.js" +import { trpc } from "../trpc.js" +import { Page } from "./templates/base.js" + +export function Dashboard() { + const hello = trpc.something.useQuery({ greeting: "Hello", name: "Client" }) + !hello.data ? console.log("Loading data...") : console.log(hello.data); + + return ( + + + +
+ +
+ +
+
+ ) +} diff --git a/src/pages/error.tsx b/www/src/pages/error.tsx similarity index 68% rename from src/pages/error.tsx rename to www/src/pages/error.tsx index 0e9af44b..5031971b 100644 --- a/src/pages/error.tsx +++ b/www/src/pages/error.tsx @@ -1,4 +1,4 @@ -import { Page } from './templates/base' +import { Page } from "./templates/base.js" export function PageError() { return ( diff --git a/src/pages/templates/base.tsx b/www/src/pages/templates/base.tsx similarity index 79% rename from src/pages/templates/base.tsx rename to www/src/pages/templates/base.tsx index 1cbec20c..8513007d 100644 --- a/src/pages/templates/base.tsx +++ b/www/src/pages/templates/base.tsx @@ -1,6 +1,6 @@ -import { ComponentChildren } from 'preact' -import { TopBar } from '../../components/TopBar' -import polkadotLogo from '../../assets/polkadot.svg' +import { ComponentChildren } from "preact" +import polkadotLogo from "../../assets/polkadot.svg" +import { TopBar } from "../../components/TopBar.js" type Props = { children: ComponentChildren diff --git a/src/signals/accounts.ts b/www/src/signals/accounts.ts similarity index 61% rename from src/signals/accounts.ts rename to www/src/signals/accounts.ts index 032db901..f956d729 100644 --- a/src/signals/accounts.ts +++ b/www/src/signals/accounts.ts @@ -1,23 +1,23 @@ -import { effect, signal } from '@preact/signals' -import { getWalletBySource, WalletAccount } from '@talisman-connect/wallets' -import { retrieveStored } from '../util/localStorage' -import { retry } from '../util/retry' +import { effect, signal } from "@preact/signals" +import { getWalletBySource, WalletAccount } from "@talisman-connect/wallets" +import { retrieveStored } from "../util/localStorage.js" +import { retry } from "../util/retry.js" interface InjectedWindow extends Window { injectedWeb3: unknown } const accounts = signal([]) -const storedAccount = retrieveStored('defaultAccount') -const storedExtension = retrieveStored('defaultExtension') +const storedAccount = retrieveStored("defaultAccount") +const storedExtension = retrieveStored("defaultExtension") const defaultAccount = signal(storedAccount) const defaultExtension = signal(storedExtension) effect( () => - defaultAccount.value && - localStorage.setItem( - 'defaultAccount', + defaultAccount.value + && localStorage.setItem( + "defaultAccount", JSON.stringify(defaultAccount.value), ), ) @@ -28,10 +28,10 @@ async function maybeInjectedAccounts() { } async function getAccounts() { - const wallet = getWalletBySource('polkadot-js') + const wallet = getWalletBySource("polkadot-js") if (wallet) { try { - await wallet.enable('Capi Multisig App') + await wallet.enable("Capi Multisig App") // TODO unsubscribe unknown await wallet.subscribeAccounts((a) => { accounts.value = a ?? [] @@ -43,7 +43,7 @@ async function getAccounts() { console.error(err) } } else { - console.error('Polkadot.js extension is not installed') + console.error("Polkadot.js extension is not installed") } } diff --git a/www/src/signals/index.ts b/www/src/signals/index.ts new file mode 100644 index 00000000..b7558629 --- /dev/null +++ b/www/src/signals/index.ts @@ -0,0 +1 @@ +export * from "./accounts.js" diff --git a/www/src/trpc.ts b/www/src/trpc.ts new file mode 100644 index 00000000..e3193f28 --- /dev/null +++ b/www/src/trpc.ts @@ -0,0 +1,5 @@ +import { createTRPCReact } from '@trpc/react-query'; +import { type router } from "server" + +export const trpc: ReturnType> = createTRPCReact() + diff --git a/www/src/util/localStorage.ts b/www/src/util/localStorage.ts new file mode 100644 index 00000000..d0349540 --- /dev/null +++ b/www/src/util/localStorage.ts @@ -0,0 +1,17 @@ +import { Wallet, WalletAccount } from "@talisman-connect/wallets" + +export function retrieveStored( + key: "defaultAccount", +): WalletAccount | undefined +export function retrieveStored(key: "defaultExtension"): Wallet | undefined +export function retrieveStored(key: "defaultExtension" | "defaultAccount") { + const stored = localStorage.getItem(key) + if (stored) { + try { + return JSON.parse(stored) as WalletAccount | Wallet | undefined + } catch (error) { + console.error(`Could not retrieve ${key}`, error) + } + } + return +} diff --git a/src/util/retry.ts b/www/src/util/retry.ts similarity index 84% rename from src/util/retry.ts rename to www/src/util/retry.ts index 115f0274..c050db79 100644 --- a/src/util/retry.ts +++ b/www/src/util/retry.ts @@ -3,7 +3,7 @@ export const retry = async ( { retries, retryIntervalMs }: { retries: number; retryIntervalMs: number }, ): Promise => { try { - console.log('Getting accounts...') + console.log("Getting accounts...") return await fn() } catch (error) { @@ -13,7 +13,7 @@ export const retry = async ( console.log(`Waiting ${retryIntervalMs}ms..`) await sleep(retryIntervalMs) - console.log('Re-trying to get accounts...') + console.log("Re-trying to get accounts...") return retry(fn, { retries: retries - 1, retryIntervalMs }) } diff --git a/www/tailwind.config.cjs b/www/tailwind.config.cjs new file mode 100644 index 00000000..66689616 --- /dev/null +++ b/www/tailwind.config.cjs @@ -0,0 +1,25 @@ +module.exports = { + content: ["./src/**/*.{js,ts,jsx,tsx}"], + theme: { + extend: { + colors: { + button: { + DEFAULT: "#321D47", + secondary: "#DAE0F2", + "secondary-text": "#000000E3", + danger: "#FD4935", + }, + tabs: { + DEFAULT: "#E6007A", + text: "#111827", + dimmed: "#6C6B80", + }, + }, + }, + }, + plugins: [ + require("@tailwindcss/forms"), + require("@tailwindcss/line-clamp"), + require("prettier-plugin-tailwindcss"), + ], +} diff --git a/www/tsconfig.json b/www/tsconfig.json new file mode 100644 index 00000000..723b5203 --- /dev/null +++ b/www/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../tsconfig.base.json", + "compilerOptions": { + "noEmit": true, + "types": ["vite/client"] + }, + "include": ["."], + "paths": { + "pages": ["src/pages"], + "signals": ["src/signals"] + }, + "references": [ + { "path": "../common" }, + { "path": "../server" } + ] +} diff --git a/www/vite.config.ts b/www/vite.config.ts new file mode 100644 index 00000000..349e2c4d --- /dev/null +++ b/www/vite.config.ts @@ -0,0 +1,11 @@ +import { preact } from "@preact/preset-vite" +import { defineConfig } from "vite" +import tsConfigPaths from "vite-tsconfig-paths" + +export default defineConfig({ + plugins: [preact(), tsConfigPaths()], + build: { target: "esnext" }, + optimizeDeps: { + esbuildOptions: { target: "es2022" }, + }, +})